条件判断函数用于根据不同条件返回不同结果。它让 SQL 在查询阶段就能完成简单的业务分支逻辑,例如状态转换、默认值处理、字段映射等。
IF() 是最常见的条件判断函数,基本语法如下:
IF(条件, 值1, 值2)
如果条件成立,返回 值1;否则返回 值2。
示例:
SELECT IF(1 > 0, 'yes', 'no');
SELECT IF(score >= 60, '及格', '不及格') AS result
FROM exam_result;
当判断分支较多时,通常使用 CASE 更清晰:
SELECT
name,
CASE
WHEN score >= 90 THEN '优秀'
WHEN score >= 60 THEN '及格'
ELSE '不及格'
END AS level
FROM exam_result;
CASE 适合:
IFNULL() 用于判断值是否为 NULL。
语法:
IFNULL(expr1, expr2)
如果 expr1 不为 NULL,返回 expr1;否则返回 expr2。
示例:
SELECT IFNULL(NULL, '默认值');
SELECT IFNULL(nickname, name) AS display_name
FROM user;
NULLIF() 用于比较两个值,如果两者相等则返回 NULL,否则返回第一个值。
SELECT NULLIF(1, 1);
SELECT NULLIF(1, 2);
它在某些特殊计算中很有用,例如避免除数为 0:
SELECT amount / NULLIF(quantity, 0)
FROM order_item;
如果 quantity 为 0,那么 NULLIF(quantity, 0) 会返回 NULL,从而避免报错或非法计算。
条件判断函数让 SQL 更接近“可表达业务规则”的语言。简单二选一常用 IF(),多分支规则常用 CASE,空值处理则经常使用 IFNULL() 和 NULLIF()。