MySQL 常用函数分四类:字符串函数(如 CONCAT、SUBSTRING、UPPER)、数值函数(如 ROUND、FLOOR、MOD)、日期函数(如 NOW、DATE_ADD、DATEDIFF)、条件与转换函数(如 IF、CASE、COALESCE、CAST),提升查询效率与可读性。

MySQL 中的函数能帮你快速处理数据,不用在应用层反复计算。掌握常用函数,查询更简洁、逻辑更清晰。
字符串处理函数
处理文本时最常用,比如截取、拼接、大小写转换。
- CONCAT(str1, str2, …):拼接多个字符串,NULL 值会让整个结果变 NULL,可用 IFNULL 或 COALESCE 预处理
- SUBSTRING(str, pos, len):从第 pos 位开始截取 len 个字符(pos 从 1 开始);也可用 SUBSTR,效果一样
- UPPER(str) / LOWER(str):统一转大写或小写,适合做不区分大小写的比较
- TRIM([BOTH|LEADING|TRAILING] [char FROM] str):默认去掉首尾空格,加参数可指定字符或方向
数值计算函数
对数字字段做统计、四舍五入、取整等操作很实用。
- ROUND(x, d):四舍五入到小数点后 d 位,d 可为负数(如 ROUND(1234, -2) 得 1200)
- FLOOR(x) / CEILING(x):向下 / 向上取整,常用于分页计算或区间归类
- ABS(x):返回绝对值,避免负数干扰排序或比较
- MOD(n, m) 或 n % m:取模运算,可用于奇偶判断、轮询分组等场景
日期时间函数
查报表、算周期、筛选时间段离不开这些函数。
- NOW() / CURDATE() / CURTIME():分别返回当前日期时间、日期、时间
- DATE_ADD(date, INTERVAL expr unit):给日期加减间隔,如 DATE_ADD(NOW(), INTERVAL 7 DAY)
- YEAR(date) / MONTH(date) / DAY(date):提取年月日部分,适合按时间维度分组统计
- DATEDIFF(end, start):返回两个日期之间的天数差,注意顺序,结果可正可负
条件与类型转换函数
让查询更灵活,应对 NULL、多分支逻辑或数据类型不一致的情况。
- IF(condition, true_val, false_val):类似三元表达式,简单二选一
- CASE WHEN … THEN … ELSE … END:处理多条件分支,可放在 SELECT、WHERE、ORDER BY 中
- COALESCE(val1, val2, …):返回第一个非 NULL 值,比 IFNULL 更通用(支持多个参数)
- CAST(expr AS type) / CONVERT(expr, type):强制类型转换,如把字符串 ‘2023-01-01’ 转成 DATE