对于什么是x
当为'X不是NULL`不一样`NOT(X是NULL)`
表达
x IS NOT NULL
是不等于NOT(x IS NULL)
,如在2VL的情况下
(引自this answer,这是引用法比安·帕斯卡尔在数据库管理实践问题 - 一种思维医生参考 - 接近这个答案的末尾)
我的猜测是当
这个猜测是错误的。x IS NULL
是 NULL,但我不能猜出什么时候会是(即,我没有检查过SQL标准)。
对于什么是x
当为'X不是NULL`不一样`NOT(X是NULL)`
表达
x IS NOT NULL
是不等于NOT(x IS NULL)
,如在2VL的情况下
(引自this answer,这是引用法比安·帕斯卡尔在数据库管理实践问题 - 一种思维医生参考 - 接近这个答案的末尾)
我的猜测是当
这个猜测是错误的。x IS NULL
是 NULL,但我不能猜出什么时候会是(即,我没有检查过SQL标准)。
从我读过的,Fabian Pascal没有提到com中的标量值类型为空,但很少实现的ROW类型。在标准中,想法是您可以使用IS NULL
来比较一个表(行),以确定是否所有值都设置为NULL值。因此,X IS NULL
意味着所有值都被设置为NULL值,X IS NOT NULL
意味着没有值被设置为NULL值并且NOT (X IS NULL)
意味着不是所有值都被设置为NULL值,或者换句话说,存在至少一个值值未设置为NULL。诚然,我在这里的巨人肩膀上轻描淡写,但这就是我解释他的说法的方式。
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
)
+1使用真值表。 – EndangeredMassa 2010-05-18 17:02:25
鉴于托马斯的答案,它看起来像我的'x IS NULL' * * NULL是一个红色的鲱鱼。抱歉让你误入歧途。 – 2010-05-18 17:28:12
Date和Pascal都可能因为没有真正清楚地拼写出来而出错。如果x是具有零和非零值混合的行,则它具有奇怪的混合状态。 – 2010-05-19 05:01:39