MySQL 流程函数详解

1. 引言

MySQL 中的流程函数用于在 SQL 查询中实现条件判断和逻辑控制,可以在不借助存储过程的情况下,直接在 SELECT 语句中完成分支逻辑处理。本文介绍 MySQL 中常用的流程函数及其使用场景。

2. IF 函数

IF 函数是最基础的流程函数,用于简单的条件判断,语法如下:

sql 复制代码
IF(expr1, expr2, expr3)

当 expr1 为 TRUE 时返回 expr2,否则返回 expr3。例如:

sql 复制代码
SELECT IF(1 > 0, '正确', '错误');  -- 返回 '正确'

3. IFNULL 函数

IFNULL 函数用于处理 NULL 值,语法如下:

sql 复制代码
IFNULL(expr1, expr2)

当 expr1 不为 NULL 时返回 expr1,否则返回 expr2。例如:

sql 复制代码
SELECT IFNULL(NULL, '默认值');  -- 返回 '默认值'

4. CASE 表达式

CASE 表达式支持更复杂的多分支判断,有两种写法。第一种是简单 CASE 表达式:

sql 复制代码
CASE value
    WHEN compare_value1 THEN result1
    WHEN compare_value2 THEN result2
    ELSE result_default
END

第二种是搜索 CASE 表达式:

sql 复制代码
CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ELSE result_default
END

例如,根据成绩划分等级:

sql 复制代码
SELECT score,
    CASE
        WHEN score >= 90 THEN '优秀'
        WHEN score >= 60 THEN '及格'
        ELSE '不及格'
    END AS grade
FROM student;

5. 总结

IF、IFNULL 和 CASE 是 MySQL 中最常用的流程函数,合理使用可以简化 SQL 逻辑,提高查询的可读性和灵活性。

相关推荐
Darling噜啦啦1 小时前
从零搭建单词管理系统:Next.js + Supabase + Drizzle ORM 全栈实战
数据库·orm·next.js
数据狐(Datafox)1 小时前
1688商品详情API技术解析与落地应用(含标准 JSON 示例)
java·数据库·json
阿黎梨梨1 小时前
搭建一个单词管理后台:Next.js + Supabase + Drizzle
数据库·next.js
增量星球1 小时前
embedding专题之向量化革命:从关键词到语义检索
数据库·embedding
夕除1 小时前
redis--008
java·jvm·数据库
烬羽1 小时前
一个博客系统,为什么要拆成 6 张表?
数据库·mysql
程序员-Benothing1 小时前
MySQL 中的日志类型有哪些?binlog、redo log 和 undo log 的作用和区别是什么?
数据库·mysql
XuCoder1 小时前
你写的每条 SQL 都没加过锁,可 MySQL 凭什么不怕两个事务打架?
数据库·后端
2301_800954992 小时前
MySQL 数据库基础:数据类型、查询与备份恢复
数据库·mysql·oracle