微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

标准SQL布尔运算符IS与equals(=)运算符

sql的维基百科页面上有一些关于sql中布尔逻辑的真值表. [1]维基百科页面似乎源于sql:2003标准.

等于运算符(=)的真值表与IS运算符与sql:2003草案不同.

此外,维基百科的文章指出,“IS NULL”(< null谓词>)是一种特殊情况.

sql:2003中,似乎有一个“IS”opeartor,它是一个常规运算符,如AND,NOT和OR.但是,< null谓词>还在那里

为什么< null谓词>那时IS是一个常规的布尔运算符?是否确保您可以使用不带类型的非布尔值的“IS NULL”结构?是否不鼓励使用“= NULL”?

sql:2011标准是否有所不同?

[1]:Wikipedia on SQL

[2]:SQL:2011 draft PDF页面335

[3]:SQL:2003 draft PDF页397

解决方法

这对我来说是一个新的.

如果我正确地读取<布尔值表达式>语法定义了三个谓词,仅用于布尔数据类型IS TRUE,IS FALSE,IS UNKNowN.

这些与他们的平等对手不同,因为他们只评估为真或假.永远不知道即UNKNowN = TRUE将评估为UNKNowN,但UNKNowN IS TRUE计算结果为False.

IS和=的完整的真值表如下.

+---------+-------+-------+---------+
|   IS    | TRUE  | FALSE | UNKNowN |
+---------+-------+-------+---------+
| TRUE    | TRUE  | FALSE | FALSE   |
| FALSE   | FALSE | TRUE  | FALSE   |
| UNKNowN | FALSE | FALSE | TRUE    |
+---------+-------+-------+---------+

相反

+---------+---------+---------+---------+
|    =    |  TRUE   |  FALSE  | UNKNowN |
+---------+---------+---------+---------+
| TRUE    | TRUE    | FALSE   | UNKNowN |
| FALSE   | FALSE   | TRUE    | UNKNowN |
| UNKNowN | UNKNowN | UNKNowN | UNKNowN |
+---------+---------+---------+---------+

原文地址:https://www.jb51.cc/mssql/81088.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐