最近需要做个mysql英文模糊查询中文的功能,常规写法是在表中添加一个要搜索中文的英文字段用于存储要查询中文的英文拼音或者拼音首字母。
这样确实简单方便,但是我不想这么做,我希望mysql本身就能支持这样的查询功能。于是翻遍了资料,终于找到了这个方法,只需要将函数写入数据库中,数据库中所有表字段都能支持这个功能。不需要做如何修改即可使用。
参考资料:mysql中文字段转拼音首字母,以及中文拼音模糊查询 - zenghansen - 博客园
此功能需要用到两个mysql函数:
CREATE DEFINER=`root`@`%` FUNCTION `pinyin`(P_NAME VARCHAR(255)) RETURNS varchar(255) CHARSET utf8mb3
BEGIN
DECLARE V_COMPARE VARCHAR(255);
DECLARE V_RETURN VARCHAR(255);
DECLARE I INT;
SET I = 1;
SET V_RETURN = '';
while I < LENGTH(P_NAME) do
SET V_COMPARE = SUBSTR(P_NAME, I, 1);
IF (V_COMPARE != '') THEN
#SET V_RETURN = CONCAT(V_RETURN, ',',