一、什么是 MySQL 函数?

你可以把它理解成:**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的值做等值匹配,相等就返回对应结果
两种写法的适用场景(一眼分清)

表格

语法类型 写法 适用场景 例子
简单式 CASE CASE 字段 WHEN 常量 THEN ... 等值匹配(等于某个值) 按城市分类、按性别分类
搜索式 CASE CASE 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.总结

相关推荐
AC赳赳老秦2 小时前
OpenClaw实战案例:用1个主控+3个Agent,实现SEO文章日更3篇
服务器·数据库·python·mysql·.net·deepseek·openclaw
零陵上将军_xdr2 小时前
MySQL中的索引
数据库·mysql
SPC的存折2 小时前
1、MySQL数据库基础
linux·运维·数据库·mysql
小江的记录本3 小时前
【Swagger】Swagger系统性知识体系全方位结构化总结
java·前端·后端·python·mysql·spring·docker
辰风沐阳4 小时前
MySQL 联合索引
数据库·mysql
问道飞鱼4 小时前
【数据库相关】MySQL全分类SQL详解(超多数据类型+全约束+实战落地)
数据库·sql·mysql·范例
fzb5QsS1p10 小时前
MySQL 事务的二阶段提交是什么?
数据库·mysql
2601_9498146914 小时前
使用mysql报Communications link failure异常解决
数据库·mysql
#六脉神剑15 小时前
MySQL参数调优:十个关键参数助力数据库性能数倍提升
运维·mysql