MySQL 创建函数, MySQL定义函数实现汉字转拼音 MySQL汉字转拼音MySQL汉字生成拼音字符串

MySQL 创建函数, MySQL定义函数实现汉字转拼音 MySQL汉字转拼音

 

一、MySQL创建函数

1、语法

CREATE FUNCTION fun_name([paramName type , paramName type]) RETURNS type

BEGIN

-- do something

RETURN type;

END

 

  • fun_name: 函数名称,自定义 ,不可重复。
  • paramName type:参数名称、参数类型 , 可选,非必填项。
  • RETURNS type :返回值类型,必填的。

2、创建函数

CREATE FUNCTION fun_one(arg1 int , arg2 VARCHAR(100)) RETURNS VARCHAR(100)
BEGIN
-- do something
RETURN NOW();
END

 

3、调用函数

SELECT fun_one(1,'a');

4、删除函数

DROP FUNCTION IF EXISTS fun_one ;

5、查看函数

SHOW FUNCTION STATUS [WHERE db = 'xxxx''];

 

二、MySQL汉字转拼音

1、需要一个拼音--汉字 对应的字库。 pinyin_data 表,内如如下:

 

 

2、创建 chinese_to_pinyin()函数,实现汉字转换为拼音,代码如下:


DROP FUNCTION IF EXISTS chinese_to_pinyin ;
CREATE FUNCTION chinese_to_pinyin(str varchar(100) charset gbk) RETURNS VARCHAR(200)
BEGIN
	DECLARE result varchar(200) charset gbk DEFAULT '' ;-- 最终结果
	DECLARE length int DEFAULT 0 ; -- 字符串的长度
	DECLARE default_index int DEFAULT 1 ; -- 默认截取字符串的位置
	DECLARE judge_index int DEFAULT 0 ; -- 判断非汉字字符位置,空格,逗号等
	DECLARE str_char VARCHAR(4) DEFAULT '' ; -- 截取的单个字符
	DECLARE pinyin_str VARCHAR(30) DEFAULT null ; -- 转换后的拼音字符串
	SET length = CHAR_LENGTH(str); -- 计算传入字符串长度
	-- 执行 while 循环进行判断
	WHILE default_index <= length  DO
		SET str_char = SUBSTRING(str ,default_index ,1);
		SET pinyin_str = NULL;
		SELECT pinyin INTO pinyin_str FROM pinyin_data WHERE hanzi = str_char ; -- 汉字转换为拼音字符串
		SET pinyin_str = IFNULL(pinyin_str,str_char); 
        -- 判断","逗号情况
		SET judge_index = POSITION(',' IN pinyin_str);
		IF (judge_index >= 1) THEN
			SET pinyin_str = LEFT(pinyin_str , judge_index-1);
		END IF;
		-- 判断空格情况
		SET judge_index = POSITION(' ' IN str_char);
		IF	(judge_index >= 1) THEN
			SET pinyin_str = LEFT(pinyin_str , judge_index - 1);
		END IF ;
		SET result = CONCAT(result,pinyin_str);
		SET default_index = default_index + 1 ;
	END WHILE ;
	RETURN LOWER(result) ;
END

3、测试效果如下:

a. SELECT chinese_to_pinyin('中华');

 

b. SELECT chinese_to_pinyin('中 华');

c. SELECT chinese_to_pinyin('中 ,华');

 

 

三、总结

1、MySQL 创建函数,和存储过程差不多。区别:存储过程可以没有返回值,也可以有1个或多个返回值。 函数必须有返回值,仅仅只有1个。 (不知道这样总结是否正确?)

2、汉字转换为拼音,常用于根据名字生成用户名,登录名等。

3、pinyin_data 表数据太多,有2万多条,需要的可以私信,谢谢。

 

 

参考资料:

MySQL触发器资料整理创建触发器及查看、删除触发器

MySQL存储过程学习整理,游标使用,参数输入输出

 MyBatis调用存储过程,MyBatis调用函数的使用方法

MySQL 创建函数, MySQL定义函数实现汉字转拼音 MySQL汉字转拼音MySQL汉字生成拼音字符串

       MySQL创建视图

      MySQL WHILE和LOOP和REPEAT循环的用法区别 MySQL三种循环的区别 MySQL循环使用方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值