如何使用条件判断_mysql if函数用法

来源:这里教程网 时间:2026-02-28 20:35:40 作者:

MySQL 中的

IF
函数是一个简单的条件判断函数,用于在 SQL 查询中根据条件返回不同值,**不支持多分支逻辑(如 ELSE IF),也不等同于存储过程中的 IF 语句**。

IF 函数基本语法

IF(expr1, expr2, expr3)

如果 expr1 为真(非 0 且非 NULL),返回 expr2 否则(expr1 为 0、NULL 或 FALSE),返回 expr3

注意:expr1 是布尔表达式,但 MySQL 会自动将数值、字符串甚至 NULL 转换为逻辑值判断。

常见使用场景与写法示例

常用于 SELECT 查询中动态生成字段值,比如对成绩分级、订单状态标识、空值替换等:

把分数转为等级:
SELECT score, IF(score >= 60, '及格', '不及格') AS result FROM students;
处理 NULL 值:
SELECT IF(name IS NULL, '未知', name) AS real_name FROM users;
结合其他函数使用:
SELECT IF(LENGTH(phone) = 11, '有效', '无效') FROM contacts;

IF 和 CASE WHEN 的区别

IF 是函数,只能做二选一判断;CASE WHEN 支持多分支,更灵活:

IF 适合简单开关逻辑(是/否、有/无、达标/未达标) CASE WHEN 更适合多级分类,例如:
CASE WHEN score >= 90 THEN 'A' WHEN score >= 80 THEN 'B' ELSE 'C' END
IF 可以嵌套(
IF(..., ..., IF(...))
),但嵌套过深可读性差,建议优先用 CASE

注意事项和易错点

实际使用时容易忽略这些细节:

NULL 判断要小心:直接写
IF(col = NULL, ...)
永远为 FALSE,应改用
IF(col IS NULL, ...)
类型隐式转换可能出错:比如
IF('abc', 1, 0)
返回 1(非空字符串转为 TRUE),但
IF('', 1, 0)
返回 0(空字符串转为 FALSE)
不能用于控制流程:IF 函数不能替代存储过程里的 IF...THEN...ELSE 结构,它只作用于单个表达式计算

相关推荐