首页/数据/SQL 速查/NULLIF 等值转空
本包目录(311 条)
查询基础33 条连接与子查询40 条聚合与窗口函数54 条
函数速查60 条
变更与事务52 条性能与执行计划72 条

NULLIF 等值转空

当两个参数相等时返回 NULL,否则返回首个参数:保护除法、把哨兵值(如 0、'N/A')转成 NULL 的标准做法。

SQL 速查数据更新于 2026-10-12

示例

示例
-- 防止除零:分母为 0 时结果为 NULL 而不是报错
SELECT total / NULLIF(qty, 0) AS unit_price FROM orders;

-- 把 'N/A' 统一成 NULL
SELECT NULLIF(status, 'N/A') FROM t;
规则NULLIF(a,b):a=b 返回 NULL,否则返回 a
等价形式CASE WHEN a = b THEN NULL ELSE a END
类型两库都按比较规则先做类型协商
MySQL 的除法除数为 0 返回 NULL 并告警,PostgreSQL 直接报 division by zero;跨库迁移 NULLIF 保护不能省。

易错点

  • NULLIF 里比较字符串与数字时行为随库不同,尽量保持两侧类型一致
  • 用 NULLIF 转空后下游 SUM/AVG 会忽略这些值,是否丢弃要按业务确认,不要顺手加

数据来源与参考

  • MySQL 8.0 Reference Manual · Comparison Functions
  • PostgreSQL Documentation · Conditional Expressions
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌