2017-06-01 118 views
0

所以我有關於考試分配的問題,在這項任務,我們有像一堆布爾表達式:Null值 - 布爾表達式

FALSE OR NULL = NULL 

然後我們預計要寫入的值布爾表達式。要做到這一點,我利用了三值邏輯的,但如何,當你得到一個布爾表達式如下應用:

(NULLL AND TRUE) OR FALSE 

(NULL AND NULL) OR TRUE 

第一個很容易被發現通過三值邏輯,但我怎麼弄出另外兩個。

非常基本的問題,我知道,但我仍然是全新的。

在此先感謝

+0

有了很多數據庫,你可以直接找到。在MySQL中,例如:select false或null評估爲null。 –

回答

1

您需要爲布爾ANDOR三相真值表:

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 

此表的簡稱,依靠ANDOR在布爾邏輯的交換性能。在大多數SQL變體中,UNKNOWNNULL是等效的。用簡單的英語,即使有部分信息,也可以知道該值。例如,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,因爲您無法知道兩個未知值是否實際上彼此相等。

+0

謝謝,你真的說得很清楚,非常感謝! – user1845777