当前位置:首页 > My SQL > 正文内容

MySql汉字转拼音助记码

Z先生9年前 (2016-05-23)My SQL7004

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 批量设置未设置默认值字段的默认值。

DROP PROCEDURE IF EXISTS `sp_setdefaultvalue`; CREATE PROCEDURE `sp_set...

MySQL中InnoDB和MyISAM对比及索引原理区别

MySQL中InnoDB和MyISAM对比及索引原理区别

InnoDB和MyISAM是很多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,5.7之后就不一样了1、事务和外键InnoDB具有事务,支持4个事务隔离级别,回滚,崩溃修复能力和多版本并...

更改mysql默认引擎MyISAM|InnoDB

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

发表评论

访客

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