DELIMITER $$
USE `test`$$
DROP FUNCTION IF EXISTS `getPY`$$
CREATE DEFINER=`hjd`@`%` FUNCTION `getPY`(in_string VARCHAR(21845)) RETURNS VARCHAR(21845) CHARSET utf8
BEGIN
#截取字符串,每次做截取后的字符串存放在该变量中,初始为函数参数in_string值
DECLARE tmp_str VARCHAR(21845) CHARSET gbk DEFAULT '' ;
#tmp_str的长度
DECLARE tmp_len SMALLINT DEFAULT 0;
#tmp_str的长度
DECLARE tmp_loc SMALLINT DEFAULT 0;
#截取字符,每次 left(tmp_str,1) 返回值存放在该变量中
DECLARE tmp_char VARCHAR(2) CHARSET gbk DEFAULT '';
#结果字符串
DECLARE tmp_rs VARCHAR(21845)CHARSET gbk DEFAULT '';
#拼音字符,存放单个汉字对应的拼音首字符
DECLARE tmp_cc VARCHAR(2) CHARSET gbk DEFAULT '';
#初始化,将in_string赋给tmp_str
SET tmp_str = in_string;
#初始化长度
SET tmp_len = LENGTH(tmp_str);
#如果被计算的tmp_str长度大于0则进入该while
WHILE tmp_len > 0 DO
#获取tmp_str最左端的首个字符,注意这里是获取首个字符,该字符可能是汉字,也可能不是。
SET tmp_char = LEFT(tmp_str,1);
#左端首个字符赋值给拼音字符
SET tmp_cc = tmp_char;
#获取字符的编码范围的位置,为了确认汉字拼音首字母是那一个
SET tmp_loc=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);
#判断左端首个字符是多字节还是单字节字符,要是多字节则认为是汉字且作以下拼音获取,要是单字节则不处理。如果是多字节字符但是不在对应的编码范围之内,即对应的不是大写字母则也不做处理,这样数字或者特殊字符就保持原样了
IF (LENGTH(tmp_char)>1 AND tmp_loc>0 AND tmp_loc<24) THEN
#获得汉字拼音首字符
SELECT ELT(tmp_loc,'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;
#将当前tmp_str左端首个字符拼音首字符与返回字符串拼接
SET tmp_rs = CONCAT(tmp_rs,tmp_cc);
#将tmp_str左端首字符去除
SET tmp_str = SUBSTRING(tmp_str,2);
#计算当前字符串长度
SET tmp_len = LENGTH(tmp_str);
END WHILE;
#返回结果字符串
RETURN tmp_rs;
END$$
DELIMITER ;
https://www.cnblogs.com/godtrue/p/5005770.html
分享到:
相关推荐
Mysql 汉字转拼音首字母,使用方式: 运行后生成一个表 一个函数 ,SELECT getPY("龍的传人");查询结果为LDCR。 不支持多音字。
使用MySQL函数,实现获取汉字拼音首字母。在SQL语句中传入汉字返回对应的首字母
在数据库表中没有录入汉字对应的拼音首字母的情况下,进行汉字拼音首字母搜索,下载文本后 直接在mysql中执行,后就可实现根据拼音搜索功能
代码如下: select areaName from area order by convert(areaName USING gbk) COLLATE gbk_... 您可能感兴趣的文章:mysql的中文数据按拼音排序的2个方法mysql如何按照中文排序解决方案MySQL按照汉字的拼音排序简单实例
GBK汉字拼音首字母字典MYSQL脚本,可以很方便导入其他数据库使用,含拼旁、部首、字符,共20901个
#获取字符的编码范围的位置,为了确认汉字拼音首字母是那一个 SET tmp_loc=INTERVAL(CONV(HEX(tmp_char),16,10),0xB0A1,0xB0C5,0xB2C1,0xB4EE,0xB6EA,0xB7A2,0xB8C1,0xB9FE,0xBBF7,0xBFA6,0xC0AC ,0xC2E8,0xC4C3,0xC...
将中文字符串转换成汉语拼音,支持简体、繁体、中英混合,首字母大写
MySQL中文拼音数据库(6565字,全拼+首字母(大小写均有)) 里面的文件内容大体是这个样子的。(压缩包中包含sql文件,可以直接导入) INSERT INTO `hs_pinyin` VALUES (3, '在', 'zai', 'z', 'Z'); INSERT INTO `...
常用的中文拼音数据库,数据库类型MySQL,共有6565字体,里面包含字体,全拼,小写首字母,大写首字母,InnoDB引擎,已建立关联索引。
主要介绍了MySQL中文汉字转拼音的自定义函数和使用实例,需要的朋友可以参考下
在数据库中创建自定义函数,可在查询时候通过字母直接查询此字母开通的中文字段。
GBK编码下,查询汉字的汉语拼音的首字母的MySQL数据库脚本,直接导入数据库,一共存在3个字段,其中zi与jian_pin是主要的。请使用GBK
可以把一篇文章转为汉语拼音或粤语拼音,多音字可以修改选择。适合于教改小学生学习拼音。
(1)获取汉字首字母的存储过程,(2)以及附带所有汉字及其拼音的表
取汉字首字母,稍加改动,就可以取汉字拼音,代码有注释,完美无错,无需数据库。适合药店,医院,商场等大量或少量录入时自动生成 查询 编码,可以节省大量的人力。
包含7780个汉字, 有首字母,拼音、读音(带声调), 笔数等。货真价实,若下载与描述不匹配请评论说明。
C#实现拼音模糊查询,可只输入一个字母就可查询出完整的字段
气象城市名称及ID对照数据表,内含mysql数据表,json数据表,可以根据需要进行城市拼音首字母排序,且也可以根据城市拼音字母进行搜索,全拼,汉字首字母都可进行查询