NULLIF
两个值相等时返回 NULL。
简介
NULLIF(a, b) 在两个表达式相等时返回 NULL,否则返回 a。它常用于把业务哨兵值转换为空值,或用 quantity / NULLIF(divisor, 0) 避免除零错误;后续聚合会按 NULL 规则处理结果,因此必须确认“忽略”是否符合指标定义。
基础语法
SELECT NULLIF(discount, 0) FROM orders;
示例
NULLIF 示例
示例把 discount 中的 0 转为 NULL,非零折扣保持原值,便于观察等值判断的返回差异。
示例数据表
表名:
orders| discount |
|---|
| 0 |
| 50 |
| 100 |
| 0 |
运行结果
| NULLIF(discount, 0) |
|---|
| NULL |
| 50 |
| 100 |
| NULL |
常见问题
NULLIF 怎样避免除零错误?
使用 value / NULLIF(divisor, 0);除数为 0 时 NULLIF 返回 NULL,最终结果也是 NULL,而不是执行除零。
NULLIF 比较相等时返回什么?
两个表达式相等时返回 NULL,否则返回第一个表达式;比较规则仍受数据类型和排序规则影响。
把值变成 NULL 会影响聚合吗?
会。COUNT(字段)、SUM 和 AVG 通常忽略 NULL,所以使用 NULLIF 排除某类值时必须确认这正是预期。
标签
这篇内容是否清楚?
感谢反馈,我们会把它用于后续内容复核。