`

mysql汉字转拼音的方法

阅读更多
-- 建立拼音对照表
CREATE TABLE IF NOT EXISTS `t_base_pinyin` (
  `pin_yin_` varchar(255) CHARACTER SET gbk NOT NULL,
  `code_` int(11) NOT NULL,
  PRIMARY KEY (`code_`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- 插入拼音对照数据
INSERT INTO t_base_pinyin (pin_yin_,code_)  VALUES ("a", 20319),("ai", 20317),("an", 20304),("ang", 20295),("ao", 20292),("ba", 20283),("bai", 20265),("ban", 20257),("bang", 20242),("bao", 20230),("bei", 20051),("ben", 20036),("beng", 20032),("bi", 20026),("bian", 20002),("biao", 19990),("bie", 19986),("bin", 19982),("bing", 19976),("bo", 19805),("bu", 19784),("ca", 19775),("cai", 19774),("can", 19763),("cang", 19756),("cao", 19751),("ce", 19746),("ceng", 19741),("cha", 19739),("chai", 19728),("chan", 19725),("chang", 19715),("chao", 19540),("che", 19531),("chen", 19525),("cheng", 19515),("chi", 19500),("chong", 19484),("chou", 19479),("chu", 19467),("chuai", 19289),("chuan", 19288),("chuang", 19281),("chui", 19275),("chun", 19270),("chuo", 19263),("ci", 19261),("cong", 19249),("cou", 19243),("cu", 19242),("cuan", 19238),("cui", 19235),("cun", 19227),("cuo", 19224),("da", 19218),("dai", 19212),("dan", 19038),("dang", 19023),("dao", 19018),("de", 19006),("deng", 19003),("di", 18996),("dian", 18977),("diao", 18961),("die", 18952),("ding", 18783),("diu", 18774),("dong", 18773),("dou", 18763),("du", 18756),("duan", 18741),("dui", 18735),("dun", 18731),("duo", 18722),("e", 18710),("en", 18697),("er", 18696),("fa", 18526),("fan", 18518),("fang", 18501),("fei", 18490),("fen", 18478),("feng", 18463),("fo", 18448),("fou", 18447),("fu", 18446),("ga", 18239),("gai", 18237),("gan", 18231),("gang", 18220),("gao", 18211),("ge", 18201),("gei", 18184),("gen", 18183),("geng", 18181),("gong", 18012),("gou", 17997),("gu", 17988),("gua", 17970),("guai", 17964),("guan", 17961),("guang", 17950),("gui", 17947),("gun", 17931),("guo", 17928),("ha", 17922),("hai", 17759),("han", 17752),("hang", 17733),("hao", 17730),("he", 17721),("hei", 17703),("hen", 17701),("heng", 17697),("hong", 17692),("hou", 17683),("hu", 17676),("hua", 17496),("huai", 17487),("huan", 17482),("huang", 17468),("hui", 17454),("hun", 17433),("huo", 17427),("ji", 17417),("jia", 17202),("jian", 17185),("jiang", 16983),("jiao", 16970),("jie", 16942),("jin", 16915),("jing", 16733),("jiong", 16708),("jiu", 16706),("ju", 16689),("juan", 16664),("jue", 16657),("jun", 16647),("ka", 16474),("kai", 16470),("kan", 16465),("kang", 16459),("kao", 16452),("ke", 16448),("ken", 16433),("keng", 16429),("kong", 16427),("kou", 16423),("ku", 16419),("kua", 16412),("kuai", 16407),("kuan", 16403),("kuang", 16401),("kui", 16393),("kun", 16220),("kuo", 16216),("la", 16212),("lai", 16205),("lan", 16202),("lang", 16187),("lao", 16180),("le", 16171),("lei", 16169),("leng", 16158),("li", 16155),("lia", 15959),("lian", 15958),("liang", 15944),("liao", 15933),("lie", 15920),("lin", 15915),("ling", 15903),("liu", 15889),("long", 15878),("lou", 15707),("lu", 15701),("lv", 15681),("luan", 15667),("lue", 15661),("lun", 15659),("luo", 15652),("ma", 15640),("mai", 15631),("man", 15625),("mang", 15454),("mao", 15448),("me", 15436),("mei", 15435),("men", 15419),("meng", 15416),("mi", 15408),("mian", 15394),("miao", 15385),("mie", 15377),("min", 15375),("ming", 15369),("miu", 15363),("mo", 15362),("mou", 15183),("mu", 15180),("na", 15165),("nai", 15158),("nan", 15153),("nang", 15150),("nao", 15149),("ne", 15144),("nei", 15143),("nen", 15141),("neng", 15140),("ni", 15139),("nian", 15128),("niang", 15121),("niao", 15119),("nie", 15117),("nin", 15110),("ning", 15109),("niu", 14941),("nong", 14937),("nu", 14933),("nv", 14930),("nuan", 14929),("nue", 14928),("nuo", 14926),("o", 14922),("ou", 14921),("pa", 14914),("pai", 14908),("pan", 14902),("pang", 14894),("pao", 14889),("pei", 14882),("pen", 14873),("peng", 14871),("pi", 14857),("pian", 14678),("piao", 14674),("pie", 14670),("pin", 14668),("ping", 14663),("po", 14654),("pu", 14645),("qi", 14630),("qia", 14594),("qian", 14429),("qiang", 14407),("qiao", 14399),("qie", 14384),("qin", 14379),("qing", 14368),("qiong", 14355),("qiu", 14353),("qu", 14345),("quan", 14170),("que", 14159),("qun", 14151),("ran", 14149),("rang", 14145),("rao", 14140),("re", 14137),("ren", 14135),("reng", 14125),("ri", 14123),("rong", 14122),("rou", 14112),("ru", 14109),("ruan", 14099),("rui", 14097),("run", 14094),("ruo", 14092),("sa", 14090),("sai", 14087),("san", 14083),("sang", 13917),("sao", 13914),("se", 13910),("sen", 13907),("seng", 13906),("sha", 13905),("shai", 13896),("shan", 13894),("shang", 13878),("shao", 13870),("she", 13859),("shen", 13847),("sheng", 13831),("shi", 13658),("shou", 13611),("shu", 13601),("shua", 13406),("shuai", 13404),("shuan", 13400),("shuang", 13398),("shui", 13395),("shun", 13391),("shuo", 13387),("si", 13383),("song", 13367),("sou", 13359),("su", 13356),("suan", 13343),("sui", 13340),("sun", 13329),("suo", 13326),("ta", 13318),("tai", 13147),("tan", 13138),("tang", 13120),("tao", 13107),("te", 13096),("teng", 13095),("ti", 13091),("tian", 13076),("tiao", 13068),("tie", 13063),("ting", 13060),("tong", 12888),("tou", 12875),("tu", 12871),("tuan", 12860) ,("tui", 12858),("tun", 12852),("tuo", 12849),("wa", 12838),("wai", 12831),("wan", 12829),("wang", 12812),("wei", 12802),("wen", 12607),("weng", 12597),("wo", 12594),("wu", 12585),("xi", 12556),("xia", 12359),("xian", 12346),("xiang", 12320),("xiao", 12300),("xie", 12120),("xin", 12099),("xing", 12089),("xiong", 12074),("xiu", 12067),("xu", 12058),("xuan", 12039),("xue", 11867),("xun", 11861),("ya", 11847),("yan", 11831),("yang", 11798),("yao", 11781),("ye", 11604),("yi", 11589),("yin", 11536),("ying", 11358),("yo", 11340),("yong", 11339),("you", 11324),("yu", 11303),("yuan", 11097),("yue", 11077),("yun", 11067),("za", 11055),("zai", 11052),("zan", 11045),("zang", 11041),("zao", 11038),("ze", 11024),("zei", 11020),("zen", 11019),("zeng", 11018),("zha", 11014),("zhai", 10838),("zhan", 10832),("zhang", 10815),("zhao", 10800),("zhe", 10790),("zhen", 10780),("zheng", 10764),("zhi", 10587),("zhong", 10544),("zhou", 10533),("zhu", 10519),("zhua", 10331),("zhuai", 10329),("zhuan", 10328),("zhuang", 10322),("zhui", 10315),("zhun", 10309),("zhuo", 10307),("zi", 10296),("zong", 10281),("zou", 10274),("zu", 10270),("zuan", 10262),("zui", 10260),("zun", 10256),("zuo", 10254);

-- 建立汉字全部转换成拼音函数
DROP FUNCTION IF EXISTS ac_pinyin;
DELIMITER $
CREATE FUNCTION ac_pinyin(NAME VARCHAR(255) CHARSET gbk)
RETURNS VARCHAR(255) CHARSET gbk
BEGIN
    DECLARE mycode INT;
    DECLARE tmp_lcode VARCHAR(2) CHARSET gbk;
    DECLARE lcode INT;

    DECLARE tmp_rcode VARCHAR(2) CHARSET gbk;
    DECLARE rcode INT;

    DECLARE mypy VARCHAR(255) CHARSET gbk DEFAULT '';
    DECLARE lp INT;

    SET mycode = 0;
    SET lp = 1;

    SET NAME = HEX(NAME);

    WHILE lp < LENGTH(NAME) DO

        SET tmp_lcode = SUBSTRING(NAME, lp, 2);
        SET lcode = CAST(ASCII(UNHEX(tmp_lcode)) AS UNSIGNED);
        SET tmp_rcode = SUBSTRING(NAME, lp + 2, 2);
        SET rcode = CAST(ASCII(UNHEX(tmp_rcode)) AS UNSIGNED);
        IF lcode > 128 THEN
            SET mycode =65536 - lcode * 256 - rcode ;
            SELECT CONCAT(mypy,pin_yin_) INTO mypy FROM t_base_pinyin WHERE CODE_ >= ABS(mycode) ORDER BY CODE_ ASC LIMIT 1;
            SET lp = lp + 4;
        ELSE
            SET mypy = CONCAT(mypy,CHAR(CAST(ASCII(UNHEX(SUBSTRING(NAME, lp, 2))) AS UNSIGNED)));
            SET lp = lp + 2;
        END IF;
    END WHILE;
    RETURN LOWER(mypy);
END;
$
DELIMITER ;

-- 建立只转换首个字符的拼音
DROP FUNCTION IF EXISTS ofc_pinyin;
DELIMITER $
CREATE FUNCTION `ofc_pinyin`(P_NAME VARCHAR(255)) RETURNS varchar(255) CHARSET utf8
BEGIN
    DECLARE V_RETURN VARCHAR(255);
    SET V_RETURN = ELT(INTERVAL(CONV(HEX(left(CONVERT(P_NAME 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');

	IF (ISNULL(V_RETURN) or V_RETURN = '') THEN
        SET V_RETURN = upper(SUBSTR(P_NAME,1,1));
    END IF;

    RETURN V_RETURN;
END;
$
DELIMITER ;

-- 建立所有字符的首字母拼音
DROP FUNCTION IF EXISTS afc_pinyin;
DELIMITER $
CREATE  FUNCTION `afc_pinyin`(P_NAME VARCHAR(255)) RETURNS varchar(255) CHARSET utf8
BEGIN  
    DECLARE V_COMPARE VARCHAR(255);  
    DECLARE V_RETURN VARCHAR(255);  
    DECLARE I INT;  
  
    SET I = 1;  
    SET V_RETURN = '';  
    
    case hasChinese(P_NAME) 
    when 0
    then set V_RETURN = upper(P_NAME);
    when 1
    then
		while I < LENGTH(P_NAME) do  
			SET V_COMPARE = SUBSTR(P_NAME, I, 1);  
		  
			IF (V_COMPARE != '') THEN  
				#SET V_RETURN = CONCAT(V_RETURN, ',', V_COMPARE);  
				SET V_RETURN = CONCAT(V_RETURN, ofc_Pinyin(V_COMPARE));  
				#SET V_RETURN = fristPinyin(V_COMPARE);  
			END IF;  
			SET I = I + 1;  
		end while;  
		
		IF (ISNULL(V_RETURN) or V_RETURN = '') THEN  
			SET V_RETURN = P_NAME;  
		END IF;
    end case;
    RETURN V_RETURN;  
END
$
DELIMITER ;

-- 测试
select ac_pinyin('erer');
select ofc_pinyin('erer');
select afc_pinyin('ererdfgasdgf');

select ac_pinyin('测试');
select ofc_pinyin('测试');
select afc_pinyin('测试');

 

分享到:
评论

相关推荐

    Mysql中文汉字转拼音的实现(每个汉字转换全拼)

    在MySQL中实现中文汉字转拼音的功能,主要是为了方便在数据库查询和数据分析时处理中文文本,尤其是在没有全文索引或者需要进行复杂模糊匹配时。以下是一个简单的实现方法,它利用自定义函数来完成这一任务。 首先...

    Mysql 汉字转拼音首字母

    Mysql 汉字转拼音首字母,使用方式: 运行后生成一个表 一个函数 ,SELECT getPY("龍的传人");查询结果为LDCR。 不支持多音字。

    mysql汉字转拼音简码UDF

    MySQL汉字转拼音简码UDF(用户自定义函数)是一种扩展MySQL功能的方法,它使得数据库系统能够处理特定的汉字到拼音转换任务,而无需通过效率较低的函数实现。UDF允许用户为MySQL创建新的函数,以提高性能并满足特定...

    生僻汉字拼音表,用于mysql汉字转拼音

    生僻汉字拼音表,用于mysql汉字转拼音

    中文汉字转拼音的最简便方法

    本篇文章将深入探讨中文汉字转拼音的最简便方法,以及如何在实际开发中应用。 首先,我们需要理解什么是汉字转拼音。汉字转拼音是将汉字转化为其对应的汉语拼音的过程。汉语拼音是中文的标准音译系统,它为每个汉字...

    mysql 汉字拼音数据库.zip

    总之,MySQL汉字拼音数据库是处理中文信息不可或缺的工具,它能够为各种涉及到汉字处理的项目提供强大支持,提高开发效率和用户体验。通过有效的数据库设计和使用,我们可以充分利用这些数据,创造出更加智能和人性...

    汉字转换拼音与拼音转换汉字存储过程

    一种常见方法是建立拼音到汉字的多对一映射表,并根据上下文信息进行选择。如果无法确定唯一汉字,可能需要返回多个可能的结果。 3. 存储过程设计: 设计存储过程时,可以考虑以下步骤: - 定义输入参数:例如,...

    MySQL函数实现获取汉字拼音首字母

    使用MySQL函数,实现获取汉字拼音首字母。在SQL语句中传入汉字返回对应的首字母

    存储过程汉字转拼音

    在MySQL中,由于其内置不支持汉字转拼音的功能,我们通常需要借助外部工具或者自定义函数来实现。一种常见方法是创建一个用户定义函数(UDF),这个函数可以调用C或C++库(如pinyin4cpp或libpinyin)进行转换,并将...

    将汉字转换为拼音简码或五笔简码

    拼音简码是基于汉字的汉语拼音的一种简化表示方式,常见于各种中文输入法中。例如,汉字“中国”对应的拼音全拼是“Zhongguo”,而简码可能是“zg”。这种简码系统大大提高了汉字输入的效率,减少了用户的键入次数。...

    mysql汉字转全拼函数2万汉字_添加缺失汉字fen

    mysql汉字转全拼函数2万汉字,网上下载的都不全,自己原创

    MySQL中文拼音数据库(6565字,全拼+首字母)

    MySQL中文拼音数据库是一种专门用于处理中文字符到其拼音转化的数据资源,它包含了6565个汉字的全拼和首字母信息。这个数据库是用MySQL这种关系型数据库管理系统构建的,设计时考虑到了高效检索和数据存储的需求。...

    实用汉字转拼音(可以修改多音字)

    汉字转拼音,顾名思义,就是将汉字转换为其对应的汉语拼音,这是中文信息处理的一项基础工作。在这款工具中,不仅实现了基本的汉字转拼音功能,还特别考虑到了多音字的问题。多音字是指一个汉字有多个读音,如“行”...

    mysql根据汉字首字母搜索

    在数据库表中没有录入汉字对应的拼音首字母的情况下,进行汉字拼音首字母搜索,下载文本后 直接在mysql中执行,后就可实现根据拼音搜索功能

    GBK汉字拼音首字母字典MYSQL脚本

    GBK汉字拼音首字母字典MYSQL脚本是一种数据库脚本,专为处理中文字符而设计,尤其适用于GBK编码标准。GBK是GB2312编码的扩展,覆盖了更多的汉字,包括简体和繁体,共计20901个字符。这种脚本的目的是方便在MySQL...

    MySQL中文拼音数据库(6565字,全拼+首字母(大小写均有))

    MySQL中文拼音数据库(6565字,全拼+首字母(大小写均有)) 里面的文件内容大体是这个样子的。(压缩包中包含sql文件,可以直接导入) INSERT INTO `hs_pinyin` VALUES (3, '在', 'zai', 'z', 'Z'); INSERT INTO `...

    常用汉字拼音数据库汉字数据库mysql

    常用汉字

    使用PHP实现汉字转拼音1

    3. **汉字转拼音**:核心的转换方法将接收一个汉字字符串,然后逐个处理每个汉字,调用上述方法获取拼音并组合成完整的拼音字符串。这可能涉及到对汉字的拆分和拼音匹配。具体实现会根据所选择的GB2312类库或者自建...

    MySQL中文汉字转拼音的自定义函数和使用实例(首字的首字母)

    本文将介绍如何创建两个自定义函数,分别是`fristPinyin`和`pinyin`,用于实现中文汉字转拼音的功能,特别是获取汉字首字母和完整拼音。 `fristPinyin`函数的主要作用是提取输入的中文字符串的第一个汉字的首字母。...

Global site tag (gtag.js) - Google Analytics