2020年6月27日星期六

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使用对应的格式,格式允许不严格的间隔(即任何标点符都可)。格式中的数值可使用负数。若整个格式就是一个数值,则可直接使用数值类型的格式,否则应使用字符串类型的格式。

时间间隔类型格式
YEARYY
MONTHMM
DAYDD
HOURhh
MINUTEmm
SECONDss
YEAR_MONTHYY-MM
DAY_HOURDD hh
DAY_MINUTEDD hh:mm
DAY_SECONDDD hh:mm:ss
HOUR_MINUTEhh:mm
HOUR_SECONDhh:mm:ss
MINUTE_SECONDmm: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)
上下午%pAM或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)
%Y4位数字形式的年
%y2位数字形式的年
%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] ENDvalue根据各枚举值返回结果

使用流程函数时注意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当前时间戳
MySQL学习笔记(6):常用函数英国腾邦会计事务所PinFollowJabong深圳商标补贴新政策出台!非深户也可申请,快来领钱吧!Amazon's Choice有什么用?如何大概率地获取Amazon's Choice?十大Q&A解读PB,Wish新手必读云南丽江旅游要多少钱2017云南丽江旅游要多少钱跟团云南丽江旅游要多少钱跟团

没有评论:

发表评论