你可以把它理解成:MySQL 提前帮你写好的 “小工具”你直接调用,就能快速完成:

  • 字符串处理
  • 数字计算
  • 日期处理
  • 统计计算
  • 判空、转换...

不用自己写复杂逻辑,直接用函数 = 一行搞定。

二、MySQL 函数分 5 大类(必背)

1. 字符串函数(处理文字)

sql

UPPER('abc')        → 转大写 ABC
LOWER('ABC')        → 转小写 abc
LENGTH('你好')      → 长度(字节)
CONCAT('a','b')     → 拼接字符串 → ab
SUBSTR('abcde',1,3) → 截取前3个字符 → abc
TRIM('  abc  ')     → 去掉两边空格
IFNULL(name,'未知') → 如果name为null,显示“未知”

2. 数值函数(处理数字)

CEIL(1.1)       → 向上取整 2
FLOOR(1.9)      → 向下取整 1
ROUND(1.234,2)  → 四舍五入保留2位 → 1.23
ABS(-10)        → 绝对值 → 10
MOD(10,3)       → 取余 → 1
RAND()          → 随机数 0~1

3. 日期函数(处理时间)

NOW()               → 当前时间 2026-04-06 10:55:00
CURDATE()           → 当前日期 2026-04-06
YEAR(NOW())         → 取年份 → 2026
MONTH(NOW())        → 取月份 → 4
DAY(NOW())          → 取日期 → 6
DATE_FORMAT(日期,'%Y-%m-%d') → 格式化日期

4. 流程函数(判断逻辑)

① IF (条件,成立值,不成立值)

sql

IF(age>18,'成年','未成年')

② CASE WHEN(多条件判断)

搜索式 CASE(CASE WHEN)
例子1:
CASE
    WHEN age<18 THEN '少年'
    WHEN age<30 THEN '青年'
    ELSE '中年'
END
例子2:
SELECT
    id,
    name,
    CASE 
        WHEN math >= 85 THEN '优秀'
        WHEN math >= 60 THEN '及格'
        ELSE '不及格' 
    END AS math_level,
    CASE 
        WHEN english >= 85 THEN '优秀'
        WHEN english >= 60 THEN '及格'
        ELSE '不及格' 
    END AS english_level,
    CASE 
        WHEN chinese >= 85 THEN '优秀'
        WHEN chinese >= 60 THEN '及格'
        ELSE '不及格' 
    END AS chinese_level
FROM score;
例子3:
CASE
    WHEN workaddress = '北京' OR workaddress = '上海' THEN '一线城市'
    ELSE '二线城市'
END
✅ 语法规则:
  • CASE 后面不能跟字段名
  • 后面的 WHEN 可以写任意条件表达式(>、<、>=、AND、OR 等)
  • 逻辑:从上到下判断条件,第一个满足的就返回对应结果
简单式 CASE
例子1:

例子2:
CASE workaddress
    WHEN '北京' THEN '一线城市'
    WHEN '上海' THEN '一线城市'
    ELSE '二线城市'
END
✅ 语法规则:
  • CASE 后面必须跟字段名(workaddress)
  • 后面的 WHEN 只能写固定值 / 常量(不能写表达式)
  • 逻辑:把字段值和WHEN的值做等值匹配,相等就返回对应结果
两种写法的适用场景(一眼分清)

表格

语法类型写法适用场景例子
简单式 CASECASE 字段 WHEN 常量 THEN ...等值匹配(等于某个值)按城市分类、按性别分类
搜索式 CASECASE WHEN 表达式 THEN ...范围 / 多条件判断(>、<、区间、组合条件)按分数分等级、按年龄分阶段

③ IFNULL (值,替换值)

sql

IFNULL(workaddress,'地址未知')
  • IF(value, t, f):如果 value 为真,返回 t,否则返回 f。

    • 例子:SELECT name, IF(age > 30, '老将', '新人') FROM emp;

  • IFNULL(value1, value2):如果第一个值是 NULL,就返回第二个值。

    • 实战:你的 workaddress 有些是 NULL,我们可以把它显示为“待定”:SELECT name, IFNULL(workaddress, '待定') FROM emp;

5. 聚合函数(分组统计)

COUNT(*)    → 统计总条数
SUM(age)    → 求和
AVG(age)    → 平均值
MAX(age)    → 最大值
MIN(age)    → 最小值

6.总结

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐