SQLPathLab
条件与 NULL · 基础

NULLIF

两个值相等时返回 NULL。

简介

NULLIF(a, b) 在两个表达式相等时返回 NULL,否则返回 a。它常用于把业务哨兵值转换为空值,或用 quantity / NULLIF(divisor, 0) 避免除零错误;后续聚合会按 NULL 规则处理结果,因此必须确认“忽略”是否符合指标定义。

基础语法

SELECT NULLIF(discount, 0) FROM orders;

示例

NULLIF 示例

示例把 discount 中的 0 转为 NULL,非零折扣保持原值,便于观察等值判断的返回差异。

示例数据表

表名:orders
orders
discount
0
50
100
0

运行结果

result
NULLIF(discount, 0)
NULL
50
100
NULL

常见问题

NULLIF 怎样避免除零错误?

使用 value / NULLIF(divisor, 0);除数为 0 时 NULLIF 返回 NULL,最终结果也是 NULL,而不是执行除零。

NULLIF 比较相等时返回什么?

两个表达式相等时返回 NULL,否则返回第一个表达式;比较规则仍受数据类型和排序规则影响。

把值变成 NULL 会影响聚合吗?

会。COUNT(字段)、SUM 和 AVG 通常忽略 NULL,所以使用 NULLIF 排除某类值时必须确认这正是预期。

标签

条件判断

这篇内容是否清楚?