MySql汉字转拼音助记码
1、函数fristPinyin
DROP FUNCTION IF EXISTS fristPinyin; CREATE FUNCTION `fristPinyin` (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' ); RETURN V_RETURN; END
2、函数pinyin
DROP FUNCTION IF EXISTS pinyin; CREATE FUNCTION `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 = ''; 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, fristPinyin (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; RETURN V_RETURN; END
3、如果执行时报错,先运行
SET GLOBAL log_bin_trust_function_creators = TRUE;
4、基础用法
SELECT pinyin ('欣创网络') AS '大写', lower(pinyin('欣创网络')) AS '小写'