MySQL学习笔记(6):常用函数


本文更新于2019-06-29,使用MySQL 5.7,操作系统为Deepin 15.4。

数值函数

函数 作用
ABS(x) 绝对值
CEIL(x) 向上取整
FLOOR(x) 向下取整
MOD(x, y) 取余,等同x%y
RAND() [0, 1)区间的随机数
ROUND(x[, n]) 四舍五入至n位小数,n默认为0
TRUNCATE(x, n) 截断为n位小数

日期时间函数

函数 作用
CURDATE() 当前日期
CURTIME() 当前时间
DATE_ADD(t, INTERVAL expr type) 增加一定时间间隔
DATEDIFF(later, previous) later减previous相差的天数,不考虑时间
DATE_FORMAT(t, fmt) 使用fmt格式化
FROM_UNIXTIME(unix) UNIX时间戳的日期时间
HOUR(t) 小时
MINUTE(t) 分钟
MONTHNAME(t) 月份名(英文)
NOW() 当前日期时间
UNIX_TIMESTAMP(t) 转换成UNIX时间戳
WEEK(t) 一年中的第几周
YEAR(t) 年份

DATE_ADD(t, INTERVAL expr type)type可用如下的时间间隔类型。expr使用对应的格式,格式允许不严格的间隔(即任何标点符都可)。格式中的数值可使用负数。若整个格式就是一个数值,则可直接使用数值类型的格式,否则应使用字符串类型的格式。

时间间隔类型 格式
YEAR YY
MONTH MM
DAY DD
HOUR hh
MINUTE mm
SECOND ss
YEAR_MONTH YY-MM
DAY_HOUR DD hh
DAY_MINUTE DD hh:mm
DAY_SECOND DD hh:mm:ss
HOUR_MINUTE hh:mm
HOUR_SECOND hh:mm:ss
MINUTE_SECOND mm:ss

DATE_FORMAT(t, fmt)fmt参数可使用的格式符如下:

格式符类型 格式符 说明
%S/%s 两位数字形式的秒(00, ..., 59)
%i 两位数字形式的分(00, ..., 59)
%H 两位数字形式的时,24小时制(00, ..., 23)
%h/%I 两位数字形式的时,12小时制(01, ..., 12)
%k 数字形式的时,24小时制(0, ..., 23)
%l 数字形式的时,12小时制(1, ..., 12)
时分秒 %T 两位数字,24小时制的时分秒(hh:mm:ss)
时分秒 %r 两位数字,12小时制的时分秒(hh:mm:ss AM/PM)
上下午 %p AM或PM
星期 %W 英文星期(Sunday)
星期 %a 英文缩写星期(Sun)
星期 %w 数字形式的星期(0=Sunday)
%d 两位数字形式的日(01, ..., 31)
%e 数字形式的日(1, ..., 31)
%D 英文后缀形式的日(1st)
%M 英文月(January)
%b 英文缩写月(Jan)
%m 两位数字形式的月(01, ..., 12)
%c 数字形式的月(1, ..., 12)
%Y 4位数字形式的年
%y 2位数字形式的年
%j 一年中第几天,三位数字形式(001, ..., 366)
%U 一年中第几周,Sunday为周中第一天,第一个Sunday为第一周的开始,两位数字形式(00, ..., 52)
%u 一年中第几周,Monday为周中第一天,01-01为第一周的开始,两位数字形式(00, ..., 52)
% %% 字符%

字符串函数

字符串首字符的下标为1。

函数 作用
CONCAT(v[, ...]) 连接字符串,v也可以是数值
INSERT(str, idx, len, substr) 将str从idx(含)起的len个字符替换为substr
LEFT(str, len) 取左侧len个字符
LENGTH(str) 字符串长度
LOWER(str) 转换成小写
LPAD(str, len, pad) 使用pad在str左侧填充至长度为len
LTRIM(str) 去掉左侧空格
REPEAT(str, n) 重复n次
REPLACE(str, old, new) 使用new替换old
RIGHT(str, len) 取右侧len个字符
RPAD(str, len, pad) 使用pad在str右侧填充至长度为len
RTRIM(str) 去除右侧空格
STRCMP(str1, str2) str1<str2返回-1,str1=str2返回0,str1>str2返回1
SUBSTRING(str, idx, len) 截取str从idx(含)起长度为len的子串
TRIM(str) 去掉两侧空格
UPPER(str) 转换成大写

流程函数

函数 作用
IF(value, t, f) 如果value为真则返回t,否则返回f
IFNULL(value, result) 如果value不为NULL则返回value,否则返回result
CASE WHEN expr1 THEN result1 [WHEN ...] [ELSE default] END 根据各表达式的真假返回结果
CASE value WHEN enum1 THEN result1 [WHEN ...] [ELSE default] END value根据各枚举值返回结果

使用流程函数时注意NULL的情况。

聚合函数

函数 作用
BIT_AND(row) 按位与
BIT_OR(row) 按位或

其他函数

用于数据库管理的函数:

函数 作用
CURRENT_USER() 当前用户
DATABASE() 当前数据库名,同SCHEMA
PASSWORD(str) 加密成系统密码,长度为41
SCHEMA() 当前数据库名,同DATABASE
USER() 当前登录用户名
VERSION() 当前MySQL版本

用于辅助查询的函数:

函数 作用
FOUND_ROWS() 上一次查询返回的行数
LAST_INSERT_ID() 最后插入记录使用的自增长值。如一次插入多条记录,则返回第一条记录使用的自增长值

用于计算的函数:

函数 作用
BIN(value) 二进制形式表示
CRC32(value) CRC32值
HEX(value) 十六进制形式表示
INET_ATON(ip) IP从点分十进制转换成网络字节序整数
INET_NTOA(uint) IP从网络字节序整数转换成点分十进制
MD5(value) MD5值
SHA1(value) SHA1值

全局变量

变量 作用
CURRENT_TIMESTAMP 当前时间戳

作者:garvenc,发布于:2020/06/30
原文:https://www.cnblogs.com/garvenc/p/mysql_learning_6_useful_functions.html