MySQL的IF函数是二分支条件函数,语法为IF(expr1,expr2,expr3),仅支持真/假判断,不支持多分支,不可替代存储过程中的IF语句。
MySQL 中的 IF 函数是一个简单的条件判断函数,用于在 SQL 查询中根据条件返回不同值,**不支持多分支逻辑(如 ELSE IF),也不等同于存储过程中的 IF 语句**。
IF(expr1, expr2, expr3)
注意:expr1 是布尔表达式,但 MySQL 会自动将数值、字符串甚至 NULL 转换为逻辑值判断。
常用于 SELECT 查询中动态生成字段值,比如对成绩分级、订单状态标识、空值替换等:
SELECT score, IF(score >= 60, '及格', '不及格') AS result FROM students;
SELECT IF(name IS NULL, '未知', name) AS real_name FROM users;
SELECT IF(LENGTH(phone) = 11, '有效', '无效') FROM contacts;
HEN 的区别
IF 是函数,只能做二选一判断;CASE WHEN 支持多分支,更灵活:
CASE WHEN score >= 90 THEN 'A' WHEN score >= 80 THEN 'B' ELSE 'C' END
IF(..., ..., IF(...))),但嵌套过深可读性差,建议优先用 CASE实际使用时容易忽略这些细节:
IF(col = NULL, ...) 永远为 FALSE,应改用 IF(col IS NULL, ...)
IF('abc', 1, 0) 返回 1(非空字符串转为 TRUE),但 IF('', 1, 0) 返回 0(空字符串转为 FALSE)