sql - 空值 - boolean 表达式

标签 sql null boolean

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

FALSE OR NULL = NULL

然后我们需要写出 boolean 表达式的值。为此,我使用了三值逻辑,但是当您获得如下 boolean 表达式时,它是如何应用的:
(NULLL AND TRUE) OR FALSE

或者
(NULL AND NULL) OR TRUE

第一个很容易通过三值逻辑找到,但是我如何找出其他两个。

非常基本的问题,我知道,但我对此仍然是全新的。

提前致谢

最佳答案

您需要 boolean 值 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

这张表是缩写的,依赖于 boolean 逻辑中ANDOR的交换性质。在大多数 SQL 变体中,UNKNOWNNULL 是等效的。用简单的英语,如果即使有部分信息也可以知道该值,则提供它。例如 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/

    相关文章:

    php - 基于用户选项的 PHP 动态 SQL SELECT 语句

    javascript - DOM 元素上的空样式属性 : JavaScript

    python - 为什么 "No"在以下 python 代码中作为 raw_input 返回 TRUE?

    MySQL全文搜索以 boolean 模式按相关性排序

    php - SQL查询失败

    php - ORDER BY RAND() 返回重复项

    php - 使用 PostgreSQL 或 Mysql 的 SQL 查询进度

    null - 从 ansible 中的 stdout 中删除空值

    mysql - 如何选择零结果mysql?

    mysql - MySQL 表中 boolean 标志的替代方案?