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处理中文排序,除了拼音还能怎么办?一文掌握拼音与笔画排序的所有奥秘
一小时速通MySQL:零基础入门到精通,看这篇就够了(下篇)
一小时速通MySQL:零基础入门到精通,看这篇就够了(上篇)
MySQL小白下载指南 (以 Windows 为例)
MySQL安装太难?看完这篇就够了!小白专属下载安装指南
MySQL清空表数据,你用DELETE还是TRUNCATE?一文讲清两者核心差异与正确使用场景
从查询崩溃到丝滑流畅:详解MySQL性能优化的核心路径与高频实战技巧
MySQL性能优化漫谈:从金字塔法则到避坑指南,一位老DBA的架构思维与实践总结
千万级数据何去何从?一文读懂MySQL分库分表面试与工程实践的核心要点
mysql2,用于与 MySQL 数据库进行交互