17370845950

如何使用mysql常用函数_sql函数入门
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 的日期函数返回的是日期类型,可直接参与比较。

  • 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() 防止意外中断
  • 函数嵌套不宜过深,影响可读性;复杂逻辑建议拆到应用层或用视图封装