当将变量设置为Null时,我需要检查并确认它为null或其他值。如果我将两者进行比较,则不起作用,即使我将@tmp = null设置为@tmp = null也会返回False。但是@tmp为null会返回True。以此为例,我如何将另一个值与@tmp(也为null)进行比较,以查看它们是否匹配?由于这些是整数,因此我不能将其设置为空字符串,也不能将零设置为删除Null。
./configure
预期结果为1,但返回2。
答案 0 :(得分:0)
这是因为您假设@tmp = null
是比较@tmp
和NULL
的值的有效方法。
实际上,您应该使用IS NULL
来测试NULL
的值:
declare @tmp integer = null
select case when @tmp IS NULL then 1 when @tmp is null then 2 else 3 end
将其视为未定义的事物与未定义的事物相同:不,不是。
但是,这个未定义的东西实际上是未定义的:是的。
偶然地,这是由于以下事实:默认情况下,SQL Server对NULL
使用标准的ANSI NULL方法,即任何值与NULL
之间的相等比较始终为假。 / p>
如果您SET ANSI_NULLS OFF
,则@tmp = NULL
返回true。但是,我建议您反对这种方法