MySQL函数总结
一. 内置函数
-
数值运算函数:
- abs() 返回一个正整数
- floor() 返回最大整数,使这个整数小于或等于指定数的数值运算。
- round() 四舍五入一个正数或者负数,结果为一定长度的值。
- truncate() 按照小数位数,进行数值截取
-
字符串函数
-
length():utf8字符集编码下,一个汉字是算三个字符,一个数字或字母算一个字符。
-
char_length():返回值为字符串string或者对应字段长度,长度的单位为字符,一个多字节字符(例如:汉字)算作一个单字符;
-
concat():返回输入字符串连接后的结果
concat(字符串,'-',字符串) -
format():格式化字符串
format(格式化字段,规定的格式) -
left(str,len):字符串截取,从左往右开始数截取长度为len个字符串
left(字符串,截取的长度) -
right(str,len):字符串截取,从右往左开始数截取长度为len个字符串
right(字符串,截取长度) -
substr(str,pos,len):从pos开始的位置,截取len个字符
substr(字符串,开始的位置,截取长度) -
from_base64():解码操作base64编码的字符串
-
to_base64():编码操作
-
lpad(str,len,padstr):lpad(要查询的字段,长度,用来填充的字段),lpad是在左边填充
-
rpad():右边填充
-
trim():去除头尾空格字符串
- ltrim():去除左边空格字符串
- rtrim():去除右边空格字符串
-
lower():字符串将大写转为小写
-
upper():字符串将小写转为大写
-
reverse():倒置函数,将字符串逆序输出
-
-
日期时间函数:
-
current_date():返回当前日期 年月日的方式返回
-
current_time():返回当前时间 时分秒
-
current_timestamp():返回当前日期和时间。
-
datediff(datepart,startdate,enddate):返回datepart的时间差值,datepart的值可以为:
datadiff(day,'2020/7/1','2020/7/5') -- 返回值为4 -
timestampdiff(unit,begin,end):用来计算date或者datetime两个值之间的差值
-
date_add(date,expr):向日期添加指定的时间间隔
-
date_sub(date,expr):从日期当中减去指定的时间间隔
-
date_format(date,format):用于不同格式时间按照指定格式输出,date:时间、format:指定格式
-
year(date):返回年的值
-
month(date):返回月的值
-
day(date):返回天的值
-
weekday(date):数返回一个日期的工作日索引值
注意:即星期一为
0,星期二为1,星期日为6 -
quarter(date):时间所对应的季度值
-
hour(datetime):返回当前时间的小时
-
minute(datetime):返回当前时间的分钟
-
-
流程控制函数
- if(expr1,expr2,expr3):这个是MySQL函数的方言,在其它数据库当中不一定能够正常使用。expr1为条件语句,如果为真,返回exrp2,为假,返回exrp3
- ifnull(expression, alt_value):判断expression是否为空,为空就返回alt_value
- nullif(exrp1,exrp2):如果exrp1等于exrp2,则返回null
case when exrp1 then exrp2 else exrp3 end:sql当中的控制语句,不受数据库类型的控制
-
聚合函数
- sum(): 求和
- avg():求平均
- max():求最大值
- min():求最小值
- count():求数量
- var_pop():求总体方差
- var_samp():求样本方差
- stddev_pop():求总体标准差
- stddev_samp():求样本标准差
-
窗口函数
二. 自定义函数
直接上案例
-- 定义函数时,分号表示一个语句的结束并不是整段代码的结果
-- 重新定义代码的终止符为$$
delimiter $$
-- 自定义函数
create function truncate_string(
original_string varchar(16383),
max_length int unsigned
)returns varchar(16383) deterministic
begin
declare result varchar(16383) default original_string;
if char_length(original_string) > max_length then
set result = concat(left(original_string,max_length),'......');
else
set result = original_string ;
end if;
return result;
end $$
-- 还原之前的终止符
delimiter ;