對於什麼是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