您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

mysql中取得汉字字段的各汉字首字母_MySQL

2024/11/28 7:15:24发布15次查看
bitscn.com
mysql中取得汉字字段的各汉字首字母
set global log_bin_trust_function_creators = 1;
set foreign_key_checks=0;
-- ----------------------------
-- function structure for getpy
-- ----------------------------
drop function if exists `getpy`;
delimiter ;;
create definer=`root`@`%` function `getpy`(in_string varchar(65534)) returns mediumtext charset utf8
begin
declare tmp_str varchar(65534) charset gbk default '' ; #截取字符串,每次做截取后的字符串存放在该变量中,初始为函数参数in_string值
declare tmp_len smallint default 0;#tmp_str的长度
declare tmp_char varchar(2) charset gbk default '';#截取字符,每次 left(tmp_str,1) 返回值存放在该变量中
declare tmp_rs varchar(65534) charset gbk default '';#结果字符串
declare tmp_cc varchar(2) charset gbk default '';#拼音字符,存放单个汉字对应的拼音首字符
set tmp_str = in_string;#初始化,将in_string赋给tmp_str
set tmp_len = length(tmp_str);#初始化长度
while tmp_len > 0 do #如果被计算的tmp_str长度大于0则进入该while
set tmp_char = left(tmp_str,1);#获取tmp_str最左端的首个字符,注意这里是获取首个字符,该字符可能是汉字,也可能不是。
set tmp_cc = tmp_char;#左端首个字符赋值给拼音字符
if length(tmp_char)>1 then#判断左端首个字符是多字节还是单字节字符,要是多字节则认为是汉字且作以下拼音获取,要是单字节则不处理。
select elt(interval(conv(hex(tmp_char),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') into tmp_cc; #获得汉字拼音首字符
end if;
set tmp_rs = concat(tmp_rs,tmp_cc);#将当前tmp_str左端首个字符拼音首字符与返回字符串拼接
set tmp_str = substring(tmp_str,2);#将tmp_str左端首字符去除
set tmp_len = length(tmp_str);#计算当前字符串长度
end while;
return tmp_rs;#返回结果字符串
end;;
delimiter ;
bitscn.com
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product