5 MySQL 汉字转拼音(全拼)

来源:互联网 发布:,开关电源设计与优化 编辑:程序博客网 时间:2024/04/27 17:06

  • 创建拼音对照表
  • 插入对照数据
  • 创建函数

创建拼音对照表

创建汉字拼音对照临时表


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

创建函数

DELIMITER ;;CREATE DEFINER=`root`@`%` FUNCTION `to_pinyin`(NAME VARCHAR(255) CHARSET gbk) RETURNS varchar(255) CHARSET gbkBEGIN    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 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 ;
0 0
原创粉丝点击