SQL函数
文章目录
聚合函数
这个部分比较简单,且容易记忆,只放了图
字符串函数
CONCAT 字符串拼接
SELECT CONCAT('123','456'); # 123456
SELECT CONCAT('123','456','789'); # 123456789
LOWER 转小写
SELECT LOWER('AAa'); # aaa
UPPER 转大写
SELECT LOWER('AAa'); # AAA
LPAD 左填充
SELECT LPAD('1111',5,'0'); # 01111 变量1:字符串 变量2:填充后字符串长度 变量3: 填充的字符
SELECT LPAD('11111',5,'0'); # 11111
SELECT LPAD('111',5,'07'); # 07111
SELECT LPAD('1111',5,'07'); # 01111
RPAD 右填充
SELECT RPAD('1111',5,'0'); # 11110 变量1:字符串 变量2:填充后字符串长度 变量3: 填充的字符
SELECT RPAD('11111',5,'0'); # 11111
SELECT RPAD('111',5,'07'); # 11107
SELECT RPAD('1111',5,'07'); # 11110
TRIM 去头尾空格
SELECT TRIM(' 单词1 单词2 '); # 单词1 单词2 中间仍有空格,仅去头尾空格
SUBSTRING 截取部分字符串
SELECT SUBSTRING('字符串',0,1); # 返回空 索引从1开始 变量1:字符串 变量2:开始索引 变量3: 截取长度
SELECT SUBSTRING('字符串',1); # 字符串 变量3省略不写则默认截取到字符串尾部
SELECT SUBSTRING('字符串',1,2); # 字符 从索引1截取长度为2的字符串
数值函数
CEIL 向上取整
SELECT CEIL(1.1); # 2
SELECT CEIL(-1.1); # -1
FLOOR 向下取整
SELECT FLOOR(1.1); # 1
SELECT FLOOR(-1.1); # -2
MOD 取模
SELECT MOD(10,3); # 1
RAND 返回0-1随机数
SELECT RAND(); # 0.2914650238039578 返回0-1任意数,不带任何参数,注意可能返回0.0开头的随机数
ROUND 四舍五入,保留小数
SELECT ROUND(3.333,1); # 3.3 变量1:要四舍五入的数 变量2:保留的小数位
SELECT ROUND(3.373,1); # 3.4
日期函数
CURDATE 当前日期
SELECT CURDATE(); # 2023-06-10
CURTIME 当前时间
SELECT CURTIME(); # 17:13:13
NOW 当前日期和时间
SELECT NOW(); # 2023-06-10 17:13:54
YEAR 指定date的年份
SELECT YEAR(NOW()); # 2023
SELECT YEAR('2020-6-3'); # 2020
MONTH 指定date的月份
SELECT MONTH(NOW()); # 6 指6月份
SELECT MONTH('2020-7-3'); # 7
DAY 指定date的日期
SELECT DAY(NOW()); # 10 指今天10号
SELECT DAY('2020-7-3'); # 3
DATE_ADD 对当前日期做增加
SELECT DATE_ADD('2020-12-01',INTERVAL 60 DAY); # 2021-01-30 当前日期加60天 (INTERVAL 60 DAY) INTERVAL 为固定格式,60为数量,DAY为日期单位 可为DAY,MONTH,YEAR,注意一个月可能有31天
SELECT DATE_ADD('2020-12-01',INTERVAL 10 MONTH); # 2021-10-01
SELECT DATE_ADD('2020-12-01',INTERVAL 10 YEAR); # 2030-12-01
DATEDIFF 两个日期之间间隔天数
SELECT DATEDIFF('2023-6-10','2023-6-8'); # 2 注意是前面的日期减后面的日期
SELECT DATEDIFF('2023-6-8','2023-6-10'); # -2
SELECT DATEDIFF('2024-6-8','2023-6-10'); # 364
流程函数
IF 判断
SELECT IF(6>1,'ok','error'); # ok 变量1:判断条件 变量2:条件为ture返回该变量 变量3: 条件为false返回该变量
SELECT IF(1>6,'ok','error'); # error
IFNULL 判断
SELECT IFNULL('1','2'); # 1 变量1不为空返回变量1,反之返回变量2
SELECT IFNULL('','2'); # 返回'',''不为null,只有变量1为null才返回变量2
SELECT IFNULL(NULL,'2');# 2
CASE分支判断
# WHEN可有多个分支
SELECT (CASE WHEN 6 > 1 THEN '分支1' WHEN 6 > 1 THEN '分支2' ELSE '默认值' END) dd; # 分支1
SELECT (CASE WHEN 6 < 1 THEN '分支1' WHEN 6 > 1 THEN '分支2' ELSE '默认值' END) dd; # 分支1
SELECT (CASE WHEN 6 < 1 THEN '分支1' WHEN 6 > 1 THEN '分支2' ELSE '默认值' END) dd; # 分支2
SELECT (CASE WHEN 6 < 1 THEN '分支1' WHEN 6 < 1 THEN '分支2' ELSE '默认值' END) dd; # 默认值
SELECT (CASE 6 WHEN 6 THEN '分支1' WHEN 1 THEN '分支2' ELSE '默认值' END) dd; # 分支1
SELECT (CASE 1 WHEN 6 THEN '分支1' WHEN 1 THEN '分支2' ELSE '默认值' END) dd; # 分支2
SELECT (CASE 10 WHEN 6 THEN '分支1' WHEN 1 THEN '分支2' ELSE '默认值' END) dd; # 默认值