内置函数
http://www.mamicode.com/info-detail-250393.html【感谢分享】
数学函数:这类函数只要用于处理数字。这类函数包括绝对值函数、正弦函数、余弦函数、获取随机数函数等。
字符串函数:这类函数主要用于处理字符串。其中包括字符串连接函数、字符串比较函数、将字符串的字母变成小写或大写字母的函数、获取子串的函数等。
日期和时间函数:这类函数主要用于处理日期和时间。其中包括取当前时间的函数、获取当前日期的函数、返回年份的函数、返回日期的函数等。
流程函数:这类函数主要用于在SQL语句中控制条件选择。其中包括IF语句、CASE语句、WHEN语句等。
系统信息函数:这类函数主要用于获取mysql数据库的系统信息。其中包括获取数据库名的函数、获取当前用户的函数、获取数据库版本的函数等。
加密函数:这类函数主要用于对字符串进行加密解密。其中包括字符串加密函数、字符串解密函数等。
其他函数:包括格式化函数、锁函数等。
自定义函数
函数内部每条指令都是一个独立的个体,需要符合语句定义规范(使用分号结束)。同时mysql遇到分号也是表示,语句结束。这样就会倒是函数不能正常的执行下去。所以mysql提出,可以在定义函数之前,尝试修改临时的语句结束符(常用$$),函数定义完成,在将语句结束符修改为分号。
delimiter 新结束符;
1、函数创建
delimiter $$
create function 函数名(参数名 参数类型) returns 返回值类型 //必须要写返回类型
begin
函数体
return 返回值; //必须要有返回值
end
$$
delimiter ;
当函数体本身只有一条指令(return),那就可以省略begin 和 and。并且可以不用修改语句结束符。
2、查看函数
方式一:通过查看function状态,查看所有函数
show function status \G
方式二:查看函数创建语句
show create function 函数名;
3、调用函数
使用方式等同于内置函数。
select 函数名(实参列表);
4、删除函数
drop function 函数名;
5、注意事项
1、自定义函数属于用户级别,只有在当前客户端对应的数据库中可以使用。
2、可以在不同的数据库下看到对应的函数,但是不可以调用。
3、函数必须规范返回值,那么在函数内部就不能使用select指令,因为select一旦执行,就会得到一个结果(result set)。
但是 select 字段 into @变量名;(唯一可用形式)