所以我对考试作业有一个问题,在这个作业中我们有一堆布尔表达式,如:
FALSE OR NULL = NULL
Run Code Online (Sandbox Code Playgroud)
然后我们期望写出布尔表达式的值.要做到这一点,我正在使用三值逻辑,但是当你得到一个布尔表达式时,它是如何应用的:
(NULLL AND TRUE) OR FALSE
Run Code Online (Sandbox Code Playgroud)
要么
(NULL AND NULL) OR TRUE
Run Code Online (Sandbox Code Playgroud)
第一个可以很容易地通过三值逻辑找到,但我如何找出其他两个.
非常基本的问题,我知道,但我仍然是全新的.
提前致谢
小智 9
你需要布尔的三相真值表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
Run Code Online (Sandbox Code Playgroud)
此表的简称,依靠的可交换性AND和OR在布尔逻辑.在大多数SQL变体中,UNKNOWN并且NULL是等效的.用简单的英语,如果即使部分信息也可以知道该值,则提供它.例如X OR Y始终是真实的,如果X是真的,Y是否是已知的,不管它需要的价值.同样的,X AND Y始终是假的,如果X是假的,Y是否是已知的,不管它需要的价值.这些是布尔运算符的引理,并在介绍集合理论和其他地方教授.
一旦有了这些真值表,就可以在括号不存在时遵循SQL运算符的正确优先顺序来计算表达式.
以下是您的一个示例的评估链:
(NULL AND TRUE) OR FALSE (NULL) OR FALSENULL OR FALSENULL请参阅Wikipedia的三值逻辑条目:SQL中的应用程序以获取更多信息.
最后一点注意事项:NULL永远不会等于NULL,因为你无法知道两个未知值是否实际上彼此相等.
| 归档时间: |
|
| 查看次数: |
1982 次 |
| 最近记录: |