value IS NULL
和value IS NOT DISTINCT FROM NULL
有什么区别?
每个SQL方言都一样吗?
value IS NULL
和value IS NOT DISTINCT FROM NULL
有什么区别?
每个SQL方言都一样吗?
IS NOT DISTINCT FROM
谓词是SQL标准(SQL:2003)的一部分。你可以把它看作是“NULL容忍相等”。
比较:
(1 = 1) --> true
(1 = 0) --> false
(1 = null) --> unknown/null
(null = null) --> unknown/null
(1 IS NULL) --> false
(null IS NULL) --> true
(1 IS NOT DISTINCT FROM 1) --> true
(1 IS NOT DISTINCT FROM 0) --> false
(1 IS NOT DISTINCT FROM null) --> false
(null IS NOT DISTINCT FROM null) --> true
IS NULL
和IS NOT DISTINCT FROM
的主要区别是什么?基本上,IS NULL
用于检查元素是否为空。而IS NOT DISTINCT FROM
用于比较两个元素。WHERE (x IS NOT DISTINCT FROM y)
有一个标准的SQL替代方案:
WHERE (x = y OR (x IS NULL AND y IS NULL))
((x不为空且y不为空且x = y) 或者 (x为空且y为空))
- Christian Long这些测试之间存在微妙的差异,可以进行比较。
SELECT ROW(NULL, NULL) IS NOT DISTINCT FROM NULL;
并且
SELECT ROW(NULL, NULL) IS NULL;
IS [NOT] DISTINCT FROM
是 SQL 标准的一部分,而不是 Postgres 的扩展。 - user330315
value
是NULL
,那么第一个返回“true”,第二个返回“false”。它们完全不同。 - Gordon Linoffis distinct
运算符的 DBMS。因此,答案是否定的。 - user330315NOT
。 - Art