跳到主要内容
翻译页面

本页面由 AI 辅助从英文翻译而来。如两者存在差异,以英文版本为准。

NULLIF

接受两个参数,如果二者相等则返回 NULL 值,否则返回第一个参数。

NULLIF 函数等价于 CASE WHEN expression1 = expression2 THEN NULL ELSE expression1 END

当结果集包含并非 NULL 但你希望在聚合时视为 NULL 的特殊值时,NULLIF 适合与 AVG、MAX、MIN、SUM 和 COUNT 等聚合函数配合使用。

另请参阅:
[SELECT] [COALESCE] [IFNULL]


语法​

SELECT NULLIF(expression1, expression2) FROM <multipartIdentifier>;

参数​

expression
两个任意数据类型的表达式,求值结果为 NULL 或非 NULL 值。

NULLIF 函数从左到右在其参数中查找定义了排序规则函数的参数,并将该排序规则函数用于所有字符串比较。如果两个参数都未定义排序规则函数,则使用 BINARY 排序规则。

返回值​

如果两个 expression 参数的求值结果相同,则返回 NULL,否则返回第一个值。


示例​

统计某字段不等于给定值的记录数​

SELECT COUNT(NULLIF(name, 'controller-0'))
FROM google.compute.instances
WHERE project = 'stackql-demo'
AND zone = 'australia-southeast1-a';
/*
equivalent to:
SELECT COUNT(*) FROM google.compute.instances
WHERE name != 'controller-0';
*/

有关更多信息,请参阅 https://www.sqlite.org/lang_corefunc.html#nullif