gpt4 book ai didi

sql - sql server中 "="和 "is"的区别

转载 作者:行者123 更新时间:2023-12-02 05:28:20 27 4
gpt4 key购买 nike

我在理解时遇到问题 =is SQL Server 中的运算符。
考虑以下示例查询,它们在各自的输出中具有不同的行为:

SELECT * FROM tableName WHERE colName IS NULL;
SELECT * FROM tableName WHERE colName = NULL;

第一个查询将提供所需的输出,即选择那些 colName 的记录有一个 null值(value)。但是第二个查询将导致零匹配记录。

请说明这些运算符的不同用途的优缺点。

编辑
在这里,大部分答案都声称 =不适用于 null ,但以下语句适用于 null= .
SET ANSI_NULLS OFF
SELECT * FROM tableName WHERE colName = NULL;

这将提供与具有 is 的语句相同的结果运算符(operator)。

最佳答案

没有什么等于 null .

甚至没有 null等于 null .
null不是一个值,它更像是一个概念,或者一个标记,意思是未知的值。

因此,您需要两个运算符,一个用于相等,另一个用于检查 null 的概念。 .

一旦你开始想到 null作为“未知值”,很多其他行为也有道理。
10 + null ?将未知值添加到 10?显然,您将获得另一个未知值。

更多信息请查看the documentation of the equality operator in T-SQL .

此外,请参阅 SET ANSI_NULL 的文档.

请注意,文档与 x = null 的行为存在冲突。在相等运算符之间(文档说它总是 false 如果 x 是非 null )而 SET ANSI_NULLS文档说 x = null将等同于 x is null当该选项打开时。

关于sql - sql server中 "="和 "is"的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25641720/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com