x
是什么
表达式
x IS NOT NULL
不等于NOT(x IS NULL)
,如2VL中的情况
(引自this answer,引用Fabian Pascal 数据库管理中的实际问题 - 思维从业者的参考 - 接近答案的结尾)
我的猜测是当 < em>这个猜测不正确。 x IS NULL
为空时,但我无法猜测是什么时候(即我没有检查过SQL标准)。
答案 0 :(得分:15)
从我读过的内容来看,Fabian Pascal并没有提到与Null相比的标量值,而是很少实现的ROW类型。在标准中,我们的想法是您可以使用IS NULL
比较一个表(行)来确定是否所有值都设置为NULL值。因此,X IS NULL
意味着所有值都设置为NULL值,X IS NOT NULL
意味着没有值设置为NULL值,NOT (X IS NULL)
意味着并非所有值都设置为NULL值或,换句话说,存在至少一个未设置为NULL的值。当然,我在这里轻轻地踩着巨人的肩膀,但这就是我对他的陈述的解释。
答案 1 :(得分:10)
x IS NULL
永远不会是NULL
所以x
真相表啊啊:
+--------+-------------+---------+--------------+
| x |x IS NOT NULL|x IS NULL|NOT(x IS NULL)|
+--------+-------------+---------+--------------+
|NULL | FALSE | TRUE | FALSE |
|NOT NULL| TRUE | FALSE | TRUE |
+--------+-------------+---------+--------------+
请注意,对于x
的所有潜在值(NULL
或NOT NULL
)