小编典典

sql服务器中“ =”和“ s”之间的区别

sql

我有问题,同时了解=isSQL Server中的运营商。

考虑以下示例查询,它们在各自的输出中具有不同的行为:

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

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

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

编辑

在这里,大多数答案都声称=不适用于null,但是以下语句将与null和一起使用=

SET ANSI_NULLS OFF
SELECT * FROM tableName WHERE colName = NULL;

这将提供与具有is操作符的语句相同的结果。


阅读 194

收藏
2021-04-28

共1个答案

小编典典

没有什么等于null

甚至不null等于null

null 不是值,更像是概念或标记,表示未知值。

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

一旦您开始将其null视为“未知值”,其他许多行为也是有道理的。

10 + null?将未知值添加到10?显然,结果将是另一个未知值。

有关更多信息,请检查T-SQL中的相等运算符的文档

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

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

2021-04-28