Skip to content

MySQL 条件与空值判断函数


在 SQL 中,我们经常需要做条件判断和空值处理。MySQL 提供了几个非常实用的函数:IF()IFNULL()NULLIF()ISNULL()。它们各有用途。

  • 表达式IF(expr, true_value, false_value)

  • 功能:如果条件 expr 成立,返回 true_value,否则返回 false_value

相当于 SQL 里的 三元运算符

SELECT IF(1 > 0, '正确', '错误'); -- 结果: 正确
SELECT IF(2 < 1, 'yes', 'no'); -- 结果: no
  • 表达式IFNULL(expr1, expr2)

  • 功能:如果 expr1 不为 NULL,就返回 expr1;如果为 NULL,就返回 expr2

常用于处理可能为空的字段,给一个默认值。

SELECT IFNULL(NULL, '默认值'); -- 结果: 默认值
SELECT IFNULL('abc', '默认值'); -- 结果: abc
  • 表达式NULLIF(expr1, expr2)

  • 功能:如果 expr1 = expr2,则返回 NULL;否则返回 expr1

常用于避免除零错误,或在比较时做特殊处理。

SELECT NULLIF(5, 5); -- 结果: NULL
SELECT NULLIF(5, 3); -- 结果: 5

📌 典型用法:避免除零错误

SELECT 10 / NULLIF(0, 0); -- 返回 NULL,而不是报错
  • 表达式ISNULL(expr)
  • 功能:判断 expr 是否为 NULL,如果是返回 1,否则返回 0。

相当于布尔值判断。

SELECT ISNULL(NULL); -- 结果: 1
SELECT ISNULL('abc'); -- 结果: 0