【问题标题】:Rows for which the WHERE condition evaluates to NULL?WHERE 条件评估为 NULL 的行?
【发布时间】:2017-02-14 03:13:51
【问题描述】:

在 MySQLWorkbench 中执行以下查询后,只返回第一行。

select * from (
  select true as a
  union select false as a
  union select null as a
) x
where a

我从中得出的结论是,查询的where 子句计算结果为null 的行将被过滤掉。但是,我找不到有关此行为的文档,因此我想检查是否可以在编写依赖于它的查询之前假设此行为将始终发生。因此,

  1. 这种行为会一直发生吗,如果是的话,

  2. 有相关文档吗?

【问题讨论】:

    标签: mysql null


    【解决方案1】:

    是的,这种行为符合预期。

    来自文档(https://dev.mysql.com/doc/refman/5.7/en/working-with-null.html):

    在 MySQL 中,0 或 NULL 表示 false,其他任何值都表示 true。布尔运算的默认真值为 1。

    所以 null 和 false 都被过滤掉,只返回 true 的行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-18
      • 1970-01-01
      • 2020-11-23
      • 2019-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多