本文更新于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 | 当前时间戳 |
MySQL学习笔记(6):常用函数英国腾邦会计事务所、 PinFollow、 Jabong、 深圳商标补贴新政策出台!非深户也可申请,快来领钱吧!、 Amazon's Choice有什么用?如何大概率地获取Amazon's Choice?、 十大Q&A解读PB,Wish新手必读、 云南丽江旅游要多少钱2017、 云南丽江旅游要多少钱跟团、 云南丽江旅游要多少钱跟团、
没有评论:
发表评论
注意:只有此博客的成员才能发布评论。