赞
踩
一、MySQL创建函数
1、语法
- CREATE FUNCTION fun_name([paramName type , paramName type]) RETURNS type
-
- BEGIN
-
- -- do something
-
- RETURN type;
-
- END
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万多条,需要的可以私信,谢谢。
参考资料:
MyBatis调用存储过程,MyBatis调用函数的使用方法
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。