在SQL的Wikipedia页面上有一些关于SQL中布尔逻辑的真值表。[1] 维基百科页面似乎是引用了SQL:2003标准。
等号(=)的真值表与SQL:2003草案中IS运算符的不同。
此外,维基百科文章指出,“IS NULL” (<null predicate>)是一个特殊情况。
在SQL:2003中,似乎存在一个“IS”运算符,它像AND、NOT和OR一样是一个常规运算符。然而,<null predicate>仍然存在。
当IS是一个常规布尔运算符时,为什么会有<null predicate>呢?这是为了确保您可以使用“IS NULL”结构与非布尔值而不需要类型转换吗?是否不鼓励使用“=NULL”?
SQL:2011标准是否有不同的工作方式?
[1]: SQL的维基百科 [2]: SQL:2011草案 PDF第335页
[3]: SQL:2003草案 PDF第397页
等号(=)的真值表与SQL:2003草案中IS运算符的不同。
此外,维基百科文章指出,“IS NULL” (<null predicate>)是一个特殊情况。
在SQL:2003中,似乎存在一个“IS”运算符,它像AND、NOT和OR一样是一个常规运算符。然而,<null predicate>仍然存在。
当IS是一个常规布尔运算符时,为什么会有<null predicate>呢?这是为了确保您可以使用“IS NULL”结构与非布尔值而不需要类型转换吗?是否不鼓励使用“=NULL”?
SQL:2011标准是否有不同的工作方式?
[1]: SQL的维基百科 [2]: SQL:2011草案 PDF第335页
[3]: SQL:2003草案 PDF第397页
NULL = NULL
、NULL = 1
和1 = NULL
都是假的(实际上它们都是NULL
或Unknown
,这并不是真的,非常接近于假)。但是NULL IS NULL
是真的。 - MatBailie<from clause>
的。 - Martin Smith