所以我有關於考試分配的問題,在這項任務,我們有像一堆布爾表達式:Null值 - 布爾表達式
FALSE OR NULL = NULL
然後我們預計要寫入的值布爾表達式。要做到這一點,我利用了三值邏輯的,但如何,當你得到一個布爾表達式如下應用:
(NULLL AND TRUE) OR FALSE
或
(NULL AND NULL) OR TRUE
第一個很容易被發現通過三值邏輯,但我怎麼弄出另外兩個。
非常基本的問題,我知道,但我仍然是全新的。
在此先感謝
所以我有關於考試分配的問題,在這項任務,我們有像一堆布爾表達式:Null值 - 布爾表達式
FALSE OR NULL = NULL
然後我們預計要寫入的值布爾表達式。要做到這一點,我利用了三值邏輯的,但如何,當你得到一個布爾表達式如下應用:
(NULLL AND TRUE) OR FALSE
或
(NULL AND NULL) OR TRUE
第一個很容易被發現通過三值邏輯,但我怎麼弄出另外兩個。
非常基本的問題,我知道,但我仍然是全新的。
在此先感謝
您需要爲布爾AND
和OR
三相真值表:
OPERAND1 OPERATOR OPERAND2 RESULT
------------------------------------
TRUE AND TRUE TRUE
TRUE AND FALSE FALSE
FALSE AND FALSE FALSE
TRUE AND NULL UNKNOWN
FALSE AND NULL FALSE
NULL AND NULL UNKNOWN
TRUE OR TRUE TRUE
TRUE OR FALSE TRUE
FALSE OR FALSE FALSE
TRUE OR NULL TRUE
FALSE OR NULL UNKNOWN
NULL OR NULL UNKNOWN
此表的簡稱,依靠AND
和OR
在布爾邏輯的交換性能。在大多數SQL變體中,UNKNOWN
和NULL
是等效的。用簡單的英語,即使有部分信息,也可以知道該值。例如,X OR Y
始終爲爲真如果X
爲真,無論Y是否已知且無論其值如何。同樣,X AND Y
始終爲false如果X
爲假,無論Y是否已知且無論其值如何。這些是布爾運算符的引理,並在介紹性集合論和其他地方教過。
一旦你有了這些真值表,你可以評估你的表達式,當括號不存在時,按照正確的SQL運算符優先順序。
這裏是你的一個例子評估鏈:
(NULL AND TRUE) OR FALSE
(NULL) OR FALSE
NULL OR FALSE
NULL
更多見Wikipedia's Three-valued logic entry:Application in SQL。
最後一個注意事項:NULL
永遠不會等於NULL
,因爲您無法知道兩個未知值是否實際上彼此相等。
謝謝,你真的說得很清楚,非常感謝! – user1845777
有了很多數據庫,你可以直接找到。在MySQL中,例如:select false或null評估爲null。 –