MySQL数据库函数
1. 多行函数/聚合函数
对一组值执行计算并返回单一的值的函数,不能直接在where使用
聚合函数 | 支持的数据类型 | 描述 |
---|---|---|
sum(name) | 数字 | 对指定列中的所有非空值求和 |
avg(name) | 数字 | 对指定列中的所有非空值求平均值 |
min(name) | 数字,字符,日期 | 返回指定列的最小值 |
max(name) | 数字,字符,日期 | 返回指定列的最大值 |
count([DISTINCT] name) | 任意基于行的数据类型 | 返回匹配指定列的非空行数,*包含null,DISTINCT字段统计不重复记录。 |
count(expression or null) 可以统计匹配expression的行数,因为count只当参数为null时不计数,其他包括false都会计数,同理可以用count(if(expression,1,null))
2. 字符串函数
lower(name)/lcase() | 小写 |
---|---|
upper(name)/ucase() | 大写 |
substr(name,off,len)/mid | 截取字符串,off是第几位,len为截几个 |
trim(name)/LTRIM/RTRIM | 去除前后的空格,删除左/右的空格 |
trim(s1 from s) | 删除s左右两边的s1 |
str_to_date(str,pattern) | 字符转日期pattern:%Y-%m-%d %H:%i:%s 默认日期格式为:%Y-%m-%d,会自动转型 |
date_format(date,pattern) | 日期转字符 |
format(name,num) | 转成千位表示,num为小数位,四舍五入 |
ifnull(name,value) | 将null转换为指定值 |
char_length(name) | 获取字符个数 |
length(name) | 获取占用字节数 |
concat(s1,s2...) | 连接多个字符串, mysql的concat函数拼接规则是 当多个拼接的字段的字段值中存在null时,返回的一定是 null。 |
concat_ws(x,s1,s2) | 连接多个字符串以x为分隔符 |
insert(s1,x,len,s2) | 在s1里从第x个字符开始,len个字符替换成s2 |
replace(s,s1,s2) | 替换s中所有的s1为s2 |
left(s,len) | 从左开始截取len个字符 |
right(s,len) | 从右开始截取len个字符 |
repeat(s,len) | 返回s重复len遍 |
LPAD(S,len,s2) | 用s2填充s的左边知道总字符为len |
RPAD(s,len,s2) | 用s2填充s的右边知道总字符为len |
elt(n,s1,s2...) | 从后面的多个字段中返回第N个 |
field(s,s1,s2..) | 返回s在s1,s2...中处于第几个,无返回0 |
3. 日期与时间函数
now()/current_timestamp() localtime(),sysdate() | 获取当前日期和时间 |
---|---|
curdate()/current_date() | 获取当前的日期,+0获得20170616类似的数值 |
curtime()/current_time() | 获取当前的时间,+0获得时分秒拼接的数值 |
month(date)/monthname(date) | 获取指定date的月份或月份名 |
dayname(date) | 获取指定date的星期名 |
dayofweek(date) | 获取指定date处于一周的第几天(周日为1) |
weekday(date) | 获取指定date对应的星期几(一~日对应0~6) |
week(date) | 获取指定date处于一年的第几个星期(0~) |
weekofyear(date) | 获取指定date处于一年的第几个星期(1~) |
dayofyear(date) | 获取指定date是一年的第几天(1~) |
dayofmonth(date) | 获取指定date是一月的第几天(1~) |
year(date) | 获取指定date的年份 |
quarter(date) | 获取指定date的季度 |
hour(date) | 获取指定date的小时 |
minute(date) | 获取指定date的分钟 |
second(date) | 获取指定date的秒钟 |
4. 数学函数
ABS(x) | 绝对值 |
---|---|
SIGN(X) | 符号函数,返回-1,0,1表示负数,零,正数 |
rand() | 生成0~1的随机数,开区间 |
cell(x)/celling(x) | 进一 |
floor(x) | 去尾 |
round(name,num) | 四舍五入,num为保留几位小数,可为负,不写取整 |
truncate(name,num) | 保留num位小数,直接截取 |
MOD(x,y) | 取模x%y |
POW(X,Y) | X的Y次幂 |
EXP(x) | e的x次幂 |
SQRT(X) | 求x的平方根 |
Radians(x) | x换成弧度 |
degrees(x) | x换成角度 |
pi() | 返回π的值 |
三角函数(x) | 三角函数:sin,cos,tan,asin,acos,atan,cot |
5. 系统函数
version() | 系统版本 |
---|---|
connection_id() | 当前用户连接数 |
datebase()/schema() | 返回当前使用的数据库 |
user()/current_user() system_user()/session_user() | 返回当前用户名 |
6. 其他
6.1. LAST_INSERT_ID()
自动返回最后一个INSERT或 UPDATE 操作为 AUTO_INCREMENT列设置的第一个发生的值。
即一次操作产生了多行数据时,只返回第一个值
6.2. IFNULL()当为null时返回给定值
IFNULL(expression_1,expression_2);
如果expression_1不为NULL,则IFNULL函数返回expression_1; 否则返回expression_2的结果。