当前位置:   article > 正文

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

mysql拼音码怎么生成

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

 

一、MySQL创建函数

1、语法

  1. CREATE FUNCTION fun_name([paramName type , paramName type]) RETURNS type
  2. BEGIN
  3. -- do something
  4. RETURN type;
  5. END

 

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

2、创建函数

  1. CREATE FUNCTION fun_one(arg1 int , arg2 VARCHAR(100)) RETURNS VARCHAR(100)
  2. BEGIN
  3. -- do something
  4. RETURN NOW();
  5. 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()函数,实现汉字转换为拼音,代码如下:

  1. DROP FUNCTION IF EXISTS chinese_to_pinyin ;
  2. CREATE FUNCTION chinese_to_pinyin(str varchar(100) charset gbk) RETURNS VARCHAR(200)
  3. BEGIN
  4. DECLARE result varchar(200) charset gbk DEFAULT '' ;-- 最终结果
  5. DECLARE length int DEFAULT 0 ; -- 字符串的长度
  6. DECLARE default_index int DEFAULT 1 ; -- 默认截取字符串的位置
  7. DECLARE judge_index int DEFAULT 0 ; -- 判断非汉字字符位置,空格,逗号等
  8. DECLARE str_char VARCHAR(4) DEFAULT '' ; -- 截取的单个字符
  9. DECLARE pinyin_str VARCHAR(30) DEFAULT null ; -- 转换后的拼音字符串
  10. SET length = CHAR_LENGTH(str); -- 计算传入字符串长度
  11. -- 执行 while 循环进行判断
  12. WHILE default_index <= length DO
  13. SET str_char = SUBSTRING(str ,default_index ,1);
  14. SET pinyin_str = NULL;
  15. SELECT pinyin INTO pinyin_str FROM pinyin_data WHERE hanzi = str_char ; -- 汉字转换为拼音字符串
  16. SET pinyin_str = IFNULL(pinyin_str,str_char);
  17. -- 判断","逗号情况
  18. SET judge_index = POSITION(',' IN pinyin_str);
  19. IF (judge_index >= 1) THEN
  20. SET pinyin_str = LEFT(pinyin_str , judge_index-1);
  21. END IF;
  22. -- 判断空格情况
  23. SET judge_index = POSITION(' ' IN str_char);
  24. IF (judge_index >= 1) THEN
  25. SET pinyin_str = LEFT(pinyin_str , judge_index - 1);
  26. END IF ;
  27. SET result = CONCAT(result,pinyin_str);
  28. SET default_index = default_index + 1 ;
  29. END WHILE ;
  30. RETURN LOWER(result) ;
  31. 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循环使用方法

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/203921
推荐阅读
相关标签
  

闽ICP备14008679号