函数分为系统函数和自定义函数。
一、系统函数
1 文本处理函数
select lower(Sdept) as Sdept_lower
from student
order by Sdept;
常用举例:
lower() 函数将文本转化为小写。
upper() -> 将文本转化为大写
left() -> 返回串左边的字符
length() -> 返回串的长度
locate() -> 找出串的一个子串
ltrim() -> 去掉串左边的空格
rtrim() -> 去掉串右边的空格
right() -> 返回串右边的字符
substring() -> 返回子串的字符
set @cn = '你好';
set @en = 'hello';
select substring(@cn,1,2);
select substring(@en,1,5);
@cn 从角标1开始截取两个,显示你好。
@en 从角标1开始截取五个,显示hello。
2 日期时间函数
常用举例:
CurDate(); 返回当前日期
curtime(); 返回当前时间
Date(); 返回日期时间的日期部分
Date_format() 返回一个格式化的日期或时间串
Day() 返回一个日期的天数部分
dayofweek() 返回日期是星期几
now() 返回当前日期和时间
select id
from orders
where date(order_date) between '2015-01-01' and '2016-03-12';
order_date是datetime类型,year()可以取出它的年,month()可以取出它的月
3 数值处理函数
abs() 返回绝对值
mod() 返回除操作的余数
rand() 返回一个随机数
二、自定义函数
函数和存储过程类似,都是持久性模块,函数的定义和存储过程类似,不同之处在于函数必须指定返回的类型
创建函数:
create function 函数名([参数列表])returns 数据类型
begin
函数体
返回值(指定的数据类型)
end;
create function display1() returns int
return 100;
执行:select 函数名(参数);
select display1();
查看函数:
show function status\G;
发现函数是属于创建时所在数据库的。
查看函数创建:
show create function display1\G;
函数可以修改,但是只能修改函数名,对于函数本身,只能先删除,再新建。
drop function display1;
注意这里是函数名,不加括号。
带参数的函数:求1到n的和
delimiter //
create function sum1(n int)returns int
begin
set @i = 1;
set @res = 0;
while @i <= n
do
set @res = @res + @i;
set @i = @i + 1;
end//
delimiter ;
select sum1();