1.简介
SQL提供了很多函数,便于在查询时能够快速的进行计算或者计数等操作,下文介绍一些实际场景中常用的函数。
2.字符串函数
常用的字符串函数如下表所示:
函数名 描述 LENGTH(str) 返回字符串的长度,以字节为单位。例如LENGTH(‘hello’)返回5 CHAR_LENGTH(str) 返回字符串的长度,以字符为单位。对于多字节字符集,一个字符可能占用多个字节 CONCAT(str1,str2,…) 将多个字符串str1、str2等连接成一个字符串。例如CONCAT(‘hello’, ’ ', ‘world’)返回“hello world” SUBSTRING(str, pos, len) 从字符串str中返回起始位置为pos、长度为len的子字符串。例如SUBSTRING(‘hello’, 2, 3)返回“ell” UPPER(str) 将字符串str中的所有字符转换为大写 LOWER(str) 将字符串str中的所有字符转换为小写 REPLACE(str, from_str, to_str) 将字符串str中所有出现的子字符串from_str替换为to_str。例如REPLACE(‘hello world’, ‘world’, ‘mysql’)返回“hello mysql”
3. 数值函数
函数名 描述 ABS(num) 返回数值num的绝对值。例如ABS(-5)返回5 CEIL(num) 向上取整,例如CEIL(3.14)返回4 FLOOR(num) 向下取整,例如CEIL(3.14)返回3 ROUND(num, decimals) 指定保留几位小数,例如ROUND(3.14159, 2)返回3.14 RAND() 返回一个0到1之间的随机浮点数 POW(base, exp) 返回base的exp次幂。例如POW(2, 3)返回8
4.日期时间函数
函数名 描述 NOW() 返回当前的日期和时间,例如NOW()返回“2025-01-12 15:30:00” CURDATE() 返回当前日期,例如CURDATE()返回“2025-01-12” CURTIME() 返回当前时间,例如CURTIME()返回“15:30:00” DATE_ADD(date, INTERVAL expr type) 将时间间隔expr添加到日期date中。type可以是DAY、MONTH、YEAR等。例如DATE_ADD(‘2025-01-12’, INTERVAL 10 DAY)返回“2025-01-22” DATE_SUB(date, INTERVAL expr type) 从日期date中减去时间间隔expr。例如DATE_SUB(‘2025-01-12’, INTERVAL 10 DAY)返回“2024-12-31” DATEDIFF(expr1, expr2) 返回两个日期expr1和expr2之间的天数差。例如DATEDIFF(‘2025-01-22’, ‘2025-01-12’)返回10
5.聚合函数
函数名 描述 COUNT(expr) 返回expr中非NULL值的数量。常用于统计记录数 SUM(expr) 返回expr中所有值的总和。expr通常为数值类型的列。例如SUM(salary)计算工资总和 AVG(expr) 返回expr中所有值的平均值。例如AVG(age)计算平均年龄 MAX(expr) 返回expr中的最大值。例如MAX(score)获取最高分数 MIN(expr) 返回expr中的最小值。例如MIN(price)获取最低价格
6.条件函数
函数名 描述 IF(value , t , f) 如果value为true,则返回t,否则返回f IFNULL(value1 , value2) 如果value1不为空,返回value1,否则返回value2 CASE WHEN [ val1 ] THEN [res1] … ELSE [ default ] END 如果val1为true,返回res1,… 否则返回default默认值 CASE [ expr ] WHEN [ val1 ] THEN [res1] … ELSE [ default ] END 如果expr的值等于val1,返回res1,… 否则返回default默认值
case语句语法:
CASE column_name
WHEN value1 THEN result1
WHEN value2 THEN result2
. . .
ELSE default_result
END
CASE column_name
WHEN value1 THEN result1
WHEN value2 THEN result2
. . .
ELSE default_result
END