MySQL函数可提升查询效率与数据处理能力,涵盖字符串(CONCAT、SUBSTRING等)、数值(ROUND、FLOOR等)、日期(NOW、DATE_ADD等)、条件(CASE、IF)及聚合(COUNT、SUM等)函数,并需注意索引失效、NULL处理等优化要点。

MySQL 函数是提升查询效率和数据处理能力的关键工具。掌握常用函数,能让你少写很多冗余逻辑,直接在 SQL 层完成计算、格式化、条件判断等操作。
字符串处理函数:让文本更灵活
日常开发中,经常需要截取、拼接、替换或大小写转换字段内容。
- CONCAT(str1, str2, ...):拼接多个字符串,如 SELECT CONCAT('Hello', ' ', 'World'); 返回 'Hello World'
- SUBSTRING(str, pos, len) 或 SUBSTR():从位置 pos 开始截取 len 个字符,位置从 1 开始;SUBSTRING('MySQL', 2, 3) 得到 'ySQ'
- UPPER(str) / LOWER(str):统一转大写或小写,适合忽略大小写的比对或标准化显示
- TRIM([BOTH|LEADING|TRAILING] [char FROM] str):默认去掉首尾空格,也可指定字符,如 TRIM('x' FROM 'xxxHelloxxx') → 'Hello'
- REPLACE(str, from_str, to_str):全局替换,比如清理电话号中的横线:REPLACE(phone, '-', '')
数值与日期函数:快速计算与时间处理
统计分析、报表生成离不开这些函数,尤其注意 MySQL 的日期函数返回的是日期类型,可直接参与比较。
闪灵CMS企业建站系统是淄博闪灵网络科技有限公司开发的一款专门为企业建站提供解决方案的产品,前端模板样式主打HTML5模板,以动画效果好、页面流畅、响应式布局为特色,程序主体采用PHP+MYSQL构架,拥有独立自主开发的一整套函数、标签系统,具有极强的可扩展性,设计师可以非常简单的开发出漂亮实用的模板。系统自2015年发布第一个版本以来,至今已积累上万用户群,为上万企业提供最优质的建站方案。
- ROUND(x, d):四舍五入到小数点后 d 位;ROUND(3.14159, 2) → 3.14
- FLOOR(x) / CEILING(x):向下/向上取整,常用于分页或等级计算
- NOW() / CURDATE() / CURTIME():分别返回当前日期时间、日期、时间,无需传参
- DATE_ADD(date, INTERVAL expr unit):加减时间,如 DATE_ADD(NOW(), INTERVAL 7 DAY) 获取一周后的时间
- DATEDIFF(end_date, start_date):返回两个日期相差的天数(只算日期部分),适合计算会员有效期、逾期天数等
条件与聚合函数:一行代码实现逻辑分支
避免在应用层做大量 if-else 判断,SQL 层就能完成基础业务逻辑。
- CASE WHEN ... THEN ... ELSE ... END:标准条件表达式,可用于 SELECT、WHERE、ORDER BY 中,例如按金额分级:CASE WHEN amount > 1000 THEN '高价值' ELSE '普通' END
- IF(condition, true_val, false_val):简化的二元判断,如 IF(score >= 60, '通过', '未通过')
- COALESCE(val1, val2, ...):返回第一个非 NULL 值,常用于兜底默认值,比如 COALESCE(phone, mobile, '暂无联系方式')
- COUNT(), SUM(), AVG(), MAX(), MIN():配合 GROUP BY 使用,是聚合查询的基础;注意 COUNT(*) 统计行数(含 NULL),COUNT(col) 只统计该列非 NULL 值
实用技巧与注意事项
用得顺手的前提是避开常见坑。
- 函数作用于字段时,可能使索引失效——比如 WHERE UPPER(name) = 'JOHN' 无法走 name 字段的索引,建议存储时统一格式或用生成列+索引优化
- 日期函数尽量用 DATE_SUB(NOW(), INTERVAL 30 DAY) 而非字符串拼接,避免时区和格式错误
- NULL 参与运算结果仍为 NULL,善用 IFNULL() 或 COALESCE() 防止意外中断
- 函数嵌套不宜过深,影响可读性;复杂逻辑建议拆到应用层或用视图封装









