Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 空值-布尔表达式_Sql_Null_Boolean - Fatal编程技术网

Sql 空值-布尔表达式

Sql 空值-布尔表达式,sql,null,boolean,Sql,Null,Boolean,我有一个关于考试作业的问题,在这个作业中,我们有一堆布尔表达式,比如: FALSE OR NULL = NULL 然后我们需要写出布尔表达式的值。为了做到这一点,我使用了三值逻辑,但当您得到如下布尔表达式时,这将如何应用: (NULLL AND TRUE) OR FALSE 或 第一个可以通过三值逻辑很容易地找到,但是我如何计算出另外两个呢 我知道,这是一个非常基本的问题,但我对这个问题还是很陌生 提前感谢您需要用于布尔值和和或的三相真值表: OPERAND1 OPERATOR OPER

我有一个关于考试作业的问题,在这个作业中,我们有一堆布尔表达式,比如:

FALSE OR NULL = NULL
然后我们需要写出布尔表达式的值。为了做到这一点,我使用了三值逻辑,但当您得到如下布尔表达式时,这将如何应用:

(NULLL AND TRUE) OR FALSE

第一个可以通过三值逻辑很容易地找到,但是我如何计算出另外两个呢

我知道,这是一个非常基本的问题,但我对这个问题还是很陌生


提前感谢

您需要用于布尔值
的三相真值表:

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
此表缩写,取决于布尔逻辑中
的交换属性。在大多数SQL变体中,
UNKNOWN
NULL
是等效的。在简单的英语中,如果即使有部分信息也可以知道该值,则会提供该值。例如,
X或Y
始终为true如果
X
为true,则不管Y是否已知,也不管它取什么值。类似地,
X和Y
如果
X
为false,则无论Y是否已知,也不管其取值如何,
X和Y始终为false。这些是关于布尔运算符的引理,在介绍集合论和其他地方都有教授

一旦有了这些真值表,就可以在不存在括号的情况下,按照SQL运算符的正确优先顺序对表达式求值

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

  • (NULL和TRUE)或FALSE
  • (NULL)或FALSE
  • NULL或FALSE
  • NULL
更多信息,请参阅


最后一点注意:
NULL
永远不等于
NULL
,因为您无法知道两个未知值是否实际上相等。

对于许多数据库,您可以直接找到。在MySQL中,例如:select false或null计算结果为null。
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