所以我对考试作业有疑问,在这个作业中我们有一堆布尔表达式,如:
FALSE OR NULL = NULL
然后我们应该写出布尔表达式的值。要做到这一点,我正在使用三值逻辑,但是当你得到如下布尔表达式时,它是如何应用的:
(NULLL AND TRUE) OR FALSE
或
(NULL AND NULL) OR TRUE
第一个可以通过三值逻辑轻松找到,但我如何找出其他两个。
非常基本的问题,我知道,但我仍然是新手。
提前致谢
答案 0 :(得分:5)
您需要布尔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
始终为 true ,无论Y是否已知且无论其值是多少。同样,如果X AND Y
为false,则X
始终为 false ,无论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
,因为您无法知道两个未知值是否实际上彼此相等。