代码之家  ›  专栏  ›  技术社区  ›  Mark Hurd

when is`x is not null`与'not(x is null)不同`

  •  11
  • Mark Hurd  · 技术社区  · 14 年前

    为了什么? x

    表达式 x IS NOT NULL 不等于 NOT(x IS NULL) 和2VL的情况一样

    引述 this answer 引用法比安·帕斯卡的话 数据库管理中的实际问题——思维从业者的参考 --接近答案的结尾)

    我猜是什么时候 x IS NULL 空,但我无法猜测这将是什么时候(即,我没有检查SQL标准)。 这个猜测是错误的。

    2 回复  |  直到 14 年前
        1
  •  15
  •   Thomas    14 年前

    从我读到的内容来看,FabianPascal并不是指与空值相比的标量值,而是很少实现的行类型。在标准中,您可以使用 IS NULL 以确定是否所有值都设置为空值。因此, X IS NULL 意味着所有值都设置为空值, X IS NOT NULL 意味着没有将任何值设置为空值,并且 NOT (X IS NULL) 这意味着并非所有的值都设置为空值,或者,换句话说,至少有一个值未设置为空。当然,我在巨人的肩膀上轻轻地踩着,但这就是我对他的解释。

        2
  •  10
  •   Daniel DiPaolo    14 年前

    x IS NULL 永远不会 NULL 所以他们都是一样的 x

    真值表:

    +--------+-------------+---------+--------------+
    |   x    |x IS NOT NULL|x IS NULL|NOT(x IS NULL)|
    +--------+-------------+---------+--------------+
    |NULL    |    FALSE    |  TRUE   |    FALSE     |
    |NOT NULL|    TRUE     |  FALSE  |    TRUE      |
    +--------+-------------+---------+--------------+
    

    请注意,第2列和第4列对于 X (或 无效的 NOT NULL )