Sql 当is`x不为NULL`与`NOT`不相同时(x为NULL)`

Sql 当is`x不为NULL`与`NOT`不相同时(x为NULL)`,sql,null,Sql,Null,对于x是什么 表达式x不为NULL不等于NOT(x为NULL),如2VL中的情况 (引用自,其中引用了Fabian Pascal在数据库管理中的实际问题——思考实践者的参考——接近答案末尾) 我的猜测是当x为NULL时为NULL,但我无法猜测这将是什么时候(即,我没有检查SQL标准)。此猜测不正确。x为空将永远不会为NULL,因此它们对于所有x 真值表ahoy: +--------+-------------+---------+--------------+ | x |x IS NO

对于
x
是什么

表达式
x不为NULL
不等于
NOT(x为NULL)
,如2VL中的情况

(引用自,其中引用了Fabian Pascal在数据库管理中的实际问题——思考实践者的参考——接近答案末尾)


我的猜测是当
x为NULL时
为NULL,但我无法猜测这将是什么时候(即,我没有检查SQL标准)。此猜测不正确。

x为空
将永远不会为
NULL
,因此它们对于所有
x

真值表ahoy:

+--------+-------------+---------+--------------+
|   x    |x IS NOT NULL|x IS NULL|NOT(x IS NULL)|
+--------+-------------+---------+--------------+
|NULL    |    FALSE    |  TRUE   |    FALSE     |
|NOT NULL|    TRUE     |  FALSE  |    TRUE      |
+--------+-------------+---------+--------------+

请注意,第二列和第四列对于
x
(要么
NULL
,要么
notnull
)的所有潜在值都是相同的。

根据我所读的内容,Fabian Pascal与NULL相比并不是指标量值,而是指很少实现的行类型。在标准中,您可以使用
IS NULL
比较一个表(行),以确定是否所有值都设置为NULL值。因此,
X为空
意味着所有值都被设置为空值,
X为非空
意味着没有值被设置为空值,
NOT(X为空)
意味着不是所有值都被设置为空值,或者换句话说,至少存在一个值没有被设置为空值。诚然,我在这里只是轻轻地踩在巨人的肩膀上,但这就是我对他的说法的解释。

根据托马斯的回答,我的
x为空
IS为空是一条红鲱鱼。对不起,把你引入歧途了。Date和Pascal都可能因为没有真正清楚地表达出来而受到指责。如果x是一个混合了空值和非空值的行,那么它的状态会很奇怪。