当前位置:首页 > My SQL

MySql汉字转拼音助记码

Z先生10年前 (2016-05-23)My SQL7215

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 '小写'



分享给朋友:

相关文章

更改mysql默认引擎MyISAM|InnoDB

打开MySQL配置文件,Win下面默认是my.ini,Linux下面默认是my.conf[mysqld]下面加入(如果有则修改):default-storage-engine = …

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。