目录
是指一段可以直接被另一段程序调用的程序或代码
1、字符串函数
concat(str1,str2,...) 字符串拼接
SELECT CONCAT('hello','MySQL') -- 输出:helloMySQL
lower(str) 将字符串全部转为小写
SELECT LOWER('AbCd') -- 输出:abcd
upper(str) 将字符串全部转为大写
SELECT UPPER('AbCd') -- 输出:ABCD
lpad(str,n,pad) 左填充 在str的左边填充pad 达到n的长度
SELECT lpad('a',5,'1') -- 输出:1111a
rpad(str,n,pad) 右填充 在str的右边填充pad 达到n的长度
SELECT rpad('a',5,'1') -- 输出:a1111
trim(str) 去掉字符串头部和尾部空格
SELECT trim(' 123 ab ') -- 输出:123 ab
substring(str,start,len) 返回从字符串str从start位置起的len个长度的字符串
SELECT substring('abcdefg',1,3) -- 输出:abc
2、数值函数
ceil(x) 向上取整
SELECT CEIL(0.23) -- 输出:1
floor(x) 向下取整
SELECT FLOOR(0.23) -- 输出:0
mod(x,y) 返回x/y的模(余数)
SELECT MOD(7,2) -- 输出:1
rand() 返回0~1内的随机数
SELECT RAND() -- 输出:0.25186570198448904
round(x,y) 求参数x的四舍五入的值 保留y位小数
SELECT ROUND(1.3222,3) -- 输出:1.322
3、日期函数
CURDATE() 返回当前日期
SELECT CURDATE() -- 输出:2024-08-06
CURTIME() 返回当前时间
SELECT CURTIME() -- 输出:17:53:42
NOW() 返回当前日期和时间
SELECT NOW() -- 输出:2024-08-06 17:53:55
YEAR(date) 获取指定date年份
SELECT YEAR(NOW()) -- 输出:2024
MONTH(date) 获取指定date月份
SELECT MONTH(NOW()) -- 输出:8
DAY(date) 获取指定date日期
SELECT DAY(NOW()) -- 输出:6
DATE_ADD(date,INTERVAL expr unit) 返回上一个日期/时间值加上上一个时间间隔expr后的时间值
SELECT DATE_ADD(NOW(),INTERVAL 70 DAY) -- 输出:2024-10-15 17:55:17
DATEDIFF(date1,date2) 返回起始时间date1和结束时间date2之间的天数
SELECT DATEDIFF(NOW(),'2026-09-12') -- 输出:-767
4、流程函数
IF(value,t,f) 如果value为true则返回t,否则返回f
SELECT IF('123','有值','无值') -- 输出:有值
IFNULL(value1,value2) 如果value1不为null 返回value1,否则返回value2
SELECT IFNULL(null,'456') -- 输出:456
CASE WHEN [val] THEN [res1] ... ELSE[defalut] END 如果val1为true,返回res1,否则返回default默认值
SELECT name, (CASE name WHEN '北京' THEN '首都' WHEN '上海' THEN '魔都' ELSE '其他城市' END) from emp
CASE[expr] WHEN [val1] THEN [res1] ...ELSE[default] END 如果expr的值等于val1,返回res1 否则返回default默认值
SELECT id, name, (CASE when math >= 85 THEN '优秀' WHEN math>= 60 THEN '及格' ELSE '不及格' END) 数学, (CASE when english >= 85 THEN '优秀' WHEN english >= 60 THEN '及格' ELSE '不及格' END) 英语, (CASE when chinese >= 85 THEN '优秀' WHEN chinese >= 60 THEN '及格' ELSE '不及格' END) 语文 FROM score