mysql常用函数,常用函数的分类和示例

时间:2025-09-23 14:02

MySQL 提供了丰富的内置函数,用于处理数据、日期、字符串等操作。以下是一些常用函数的分类和示例:

1. 字符串函数

用于处理文本数据:
  • CONCAT(str1, str2, ...):拼接字符串
    sql
    SELECT CONCAT('Hello', ' ', 'World'); -- 结果:Hello World
    
     
     
  • LENGTH(str):返回字符串长度(字节数)
    sql
    SELECT LENGTH('中国'); -- 结果:6(UTF-8 编码下一个汉字占 3 字节)
    
     
     
  • CHAR_LENGTH(str):返回字符串长度(字符数)
    sql
    SELECT CHAR_LENGTH('中国'); -- 结果:2
    
     
     
  • UPPER(str) / LOWER(str):转换为大写 / 小写
    sql
    SELECT UPPER('hello'); -- 结果:HELLO
    
     
     
  • SUBSTRING(str, pos, len):截取子串(pos 为起始位置,len 为长度)
    sql
    SELECT SUBSTRING('abcdef', 2, 3); -- 结果:bcd
    
     
     
  • TRIM(str):去除首尾空格
    sql
    SELECT TRIM('  test  '); -- 结果:test
    
     
     

2. 数值函数

用于数学计算:
  • ABS(x):返回绝对值
    sql
    SELECT ABS(-10); -- 结果:10
    
     
     
  • ROUND(x, d):四舍五入(d 为小数位数,默认 0)
    sql
    SELECT ROUND(3.1415, 2); -- 结果:3.14
    
     
     
  • FLOOR(x) / CEIL(x):向下取整 / 向上取整
    sql
    SELECT FLOOR(3.9); -- 结果:3
    SELECT CEIL(3.1); -- 结果:4
    
     
     
  • SUM(col) / AVG(col):求和 / 求平均值(聚合函数)
    sql
    SELECT SUM(score) FROM students; -- 总分数
    SELECT AVG(score) FROM students; -- 平均分数
    
     
     
  • MOD(x, y):取余数(x 除以 y 的余数)
    sql
    SELECT MOD(10, 3); -- 结果:1
    
     
     

3. 日期和时间函数

处理日期时间类型:
  • NOW():返回当前日期和时间(YYYY-MM-DD HH:MM:SS
    sql
    SELECT NOW(); -- 结果:2023-10-01 15:30:45
    
     
     
  • CURDATE() / CURTIME():返回当前日期 / 时间
    sql
    SELECT CURDATE(); -- 结果:2023-10-01
    SELECT CURTIME(); -- 结果:15:30:45
    
     
     
  • DATE_FORMAT(date, format):格式化日期
    sql
    SELECT DATE_FORMAT(NOW(), '%Y年%m月%d日 %H:%i:%s');
    -- 结果:2023年10月01日 15:30:45
    
     
     
  • DATEDIFF(date1, date2):计算两个日期的差值(天数)
    sql
    SELECT DATEDIFF('2023-10-05', '2023-10-01'); -- 结果:4
    
     
     
  • DATE_ADD(date, INTERVAL expr unit):日期加减
    sql
    SELECT DATE_ADD(NOW(), INTERVAL 1 DAY); -- 加 1 天
    SELECT DATE_ADD(NOW(), INTERVAL -1 HOUR); -- 减 1 小时
    
     
     

4. 聚合函数

用于统计数据(通常与 GROUP BY 一起使用):
  • COUNT(col):统计非 NULL 值的数量
    sql
    SELECT COUNT(*) FROM students; -- 总记录数
    SELECT COUNT(score) FROM students; -- 非 NULL 分数的数量
    
     
     
  • MAX(col) / MIN(col):求最大值 / 最小值
    sql
    SELECT MAX(score) FROM students; -- 最高分
    SELECT MIN(score) FROM students; -- 最低分
    
     
     
  • GROUP_CONCAT(col):将分组后的字段值拼接为字符串
    sql
    SELECT class, GROUP_CONCAT(name) FROM students GROUP BY class;
    -- 结果:一班,张三,李四; 二班,王五,赵六
    
     
     

5. 条件函数

根据条件返回不同结果:
  • IF(expr, v1, v2):如果 expr 为真,返回 v1,否则返回 v2
    sql
    SELECT IF(score >= 60, '及格', '不及格') FROM students;
    
     
     
  • CASE:多条件判断
    sql
    SELECT 
      name,
      CASE 
        WHEN score >= 90 THEN '优秀'
        WHEN score >= 60 THEN '及格'
        ELSE '不及格'
      END AS level
    FROM students;
    
     
     

6. 其他常用函数

  • DISTINCT(col):去重
    sql
    SELECT DISTINCT class FROM students; -- 所有不重复的班级
    
     
     
  • COALESCE(expr1, expr2, ...):返回第一个非 NULL 的值
    sql
    SELECT COALESCE(null, '默认值'); -- 结果:默认值
    
     
     
  • MD5(str):计算字符串的 MD5 哈希值
    sql
    SELECT MD5('123456'); -- 结果:e10adc3949ba59abbe56e057f20f883e
    
     
     
这些函数可以组合使用,满足复杂的数据处理需求。实际使用时,可根据具体场景选择合适的函数。
MySQL日志到底在哪里?Linux/Windows/macOS全平台查找方法在此
MySQL数据库管理工具全景评测:从Workbench到DBeaver的技术选型指南
MySQL密码忘了怎么办?这份重置指南能救急,Windows/Linux/Mac都适用
你的MySQL为什么经常卡死?可能是锁表在作怪!快速排查方法在此
别再混淆Hive和MySQL了!读懂它们的天壤之别,才算摸到大数据的门道
清空MySQL数据表千万别用错!DELETE和TRUNCATE这个区别可能导致重大事故
你的MySQL中文排序一团糟?记住这几点,轻松实现准确拼音排序!
企业级数据架构:MySQL递归查询在组织权限树中的高级应用实践
企业级MySQL索引优化实战:高并发场景下的索引设计与调优
企业级MySQL时间管理实践:高并发场景下的性能优化与时区解决方案