我有问题,同时了解=和isSQL Server中的运营商。
=
is
考虑以下示例查询,它们在各自的输出中具有不同的行为:
SELECT * FROM tableName WHERE colName IS NULL; SELECT * FROM tableName WHERE colName = NULL;
第一个查询将提供所需的输出,即选择那些colName具有null值的记录。但是第二个查询将导致匹配记录为零。
colName
null
请根据优缺点说明这些运算符的不同用法。
编辑
在这里,大多数答案都声称=不适用于null,但是以下语句将与null和一起使用=。
SET ANSI_NULLS OFF SELECT * FROM tableName WHERE colName = NULL;
这将提供与具有is操作符的语句相同的结果。
没有什么等于null。
甚至不null等于null。
null 不是值,更像是概念或标记,表示未知值。
因此,您需要两个运算符,一个用于相等运算符,另一个用于检查的概念null。
一旦您开始将其null视为“未知值”,其他许多行为也是有道理的。
10 + null?将未知值添加到10?显然,结果将是另一个未知值。
10 + null
有关更多信息,请检查T-SQL中的相等运算符的文档。
此外,请参阅SET ANSI_NULL的文档。
请注意,文档x = null之间的相等运算符之间的行为存在冲突(文档说,false如果x为非- ,则总是如此null),而SET ANSI_NULLS文档说的x = null行为与x is null打开该选项时相同。
x = null
false
SET ANSI_NULLS
x is null