所以我有关于考试分配的问题,在这项任务,我们有像一堆布尔表达式: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。 –