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