空值 - 布尔表达式

use*_*777 4 sql null boolean

所以我对考试作业有一个问题,在这个作业中我们有一堆布尔表达式,如:

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

你需要布尔的三相真值表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
Run Code Online (Sandbox Code Playgroud)

此表的简称,依靠的可交换性ANDOR在布尔逻辑.在大多数SQL变体中,UNKNOWN并且NULL是等效的.用简单的英语,如果即使部分信息也可以知道该值,则提供它.例如X OR Y始终是真实的,如果X是真的,Y是否是已知的,不管它需要的价值.同样的,X AND Y始终是假的,如果X是假的,Y是否是已知的,不管它需要的价值.这些是布尔运算符的引理,并在介绍集合理论和其他地方教授.

一旦有了这些真值表,就可以在括号不存在时遵循SQL运算符的正确优先顺序来计算表达式.

以下是您的一个示例的评估链:

  • (NULL AND TRUE) OR FALSE
  • (NULL) OR FALSE
  • NULL OR FALSE
  • NULL

请参阅Wikipedia的三值逻辑条目:SQL中的应用程序以获取更多信息.

最后一点注意事项:NULL永远不会等于NULL,因为你无法知道两个未知值是否实际上彼此相等.