您好,欢迎访问一九零五行业门户网

MySQL拼音首字母查询_MySQL

bitscn.com
最近一个项目中有个模块需要实现拼音首字母查询功能,网上查了一下资料,自己重新修改整理了一下,使其满足项目的要求。
实现过程如下:
1.创建一个获取中英文大写首字母函数:
drop function if exists `get_first_pinyin_char`;create function `get_first_pinyin_char`(param varchar(255)) returns varchar(2) charset utf8begin declare v_return varchar(255); declare v_first_char varchar(2); set v_first_char = upper(left(param,1)); set v_return = v_first_char; if length( v_first_char) character_length( v_first_char ) then set v_return = elt(interval(conv(hex(left(convert(param using gbk),1)),16,10), 0xb0a1,0xb0c5,0xb2c1,0xb4ee,0xb6ea,0xb7a2,0xb8c1,0xb9fe,0xbbf7, 0xbfa6,0xc0ac,0xc2e8,0xc4c3,0xc5b6,0xc5be,0xc6da,0xc8bb, 0xc8f6,0xcbfa,0xcdda,0xcef4,0xd1b9,0xd4d1), 'a','b','c','d','e','f','g','h','j','k','l','m','n','o','p','q','r','s','t','w','x','y','z'); end if; return v_return;end
2.使用的mysql函数备注:
left(str,length):从左边开始截取字符串
upper(str):将字符串转为大写
length(str):计算字符串长度,一个汉字算三个字符,一个数字或字母算一个字符
character_length(str):汉字、数字、字母都算一个字符
convert(expr using encode):不同字符集之间的数据转换
hex(number or str):将数字或字符串转换为十六进制
conv(number, from, to):将数字从原来的进制转换成指定的进制
interval(n,n1,n2,n3,......):将n的值与后面的值列表进行比较。假如n < n1,则返回值为0;假如n < n2 等等,则返回值为1;假如n < n3 等等,则返回值为2;.....以此类推;假如n 为null,则返回值为 -1 。所有的参数均按照整数处理。为了这个函数的正确运行,必须满足 n1 < n2 < n3 < ……< nn
elt(n,str1,str2,str3,...):若n = 1,则返回值为 str1,若n = 2,则返回值为 str2,以此类推。若n 小于1或大于参数的数目,则返回值为 null。
3.使用样例:
select name,get_first_pinyin_char(name) from user where get_first_pinyin_char(name) = 'w'
显示结果:
bitscn.com
其它类似信息

推荐信息