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 逻辑,提高查询的可读性和灵活性。