所以我有一个关于考试作业的问题,在这个作业中,我们有一堆 boolean 表达式,如:
FALSE OR NULL = NULL
然后我们需要写出 boolean 表达式的值。为此,我使用了三值逻辑,但是当您获得如下 boolean 表达式时,它是如何应用的:
(NULLL AND TRUE) OR FALSE
或者
(NULL AND NULL) OR TRUE
第一个很容易通过三值逻辑找到,但是我如何找出其他两个。
非常基本的问题,我知道,但我对此仍然是全新的。
提前致谢
最佳答案
您需要 boolean 值 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
这张表是缩写的,依赖于 boolean 逻辑中
AND
和OR
的交换性质。在大多数 SQL 变体中,UNKNOWN
和 NULL
是等效的。用简单的英语,如果即使有部分信息也可以知道该值,则提供它。例如 X OR Y
总是 true 如果 X
为真,无论 Y 是否已知,无论它取什么值。类似地,X AND Y
总是 false 如果 X
为 false,无论 Y 是否已知,也不管它取什么值。这些是 boolean 运算符的引理,并在介绍性集合论等地方教授。一旦你有了这些真值表,你就可以评估你的表达式,当括号不存在时,遵循 SQL 运算符的正确优先顺序。
这是您的示例之一的评估链:
(NULL AND TRUE) OR FALSE
(NULL) OR FALSE
NULL OR FALSE
NULL
有关更多信息,请参阅 Wikipedia's Three-valued logic entry:Application in SQL。
最后一点:
NULL
永远不等于 NULL
,因为您无法知道两个未知值实际上是否相等。
关于sql - 空值 - boolean 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44318788/