首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >当测试if value = Null时,Setting value = Null不返回true --令人困惑

当测试if value = Null时,Setting value = Null不返回true --令人困惑
EN

Stack Overflow用户
提问于 2019-05-15 03:40:52
回答 1查看 25关注 0票数 0

当将变量设置为Null时,我需要检查并验证它是null还是另一个值。如果我将两者进行比较,即使我设置了@tmp = null,根据这个测试,如果@tmp = null返回False,它也不起作用。然而,@tmp is null返回True。根据这个,我如何将另一个值与@tmp进行比较,@tmp也是null,以查看它们是否匹配?因为它们是Integer,所以我不能设置为空字符串,零也不适合删除Nulls。

代码语言:javascript
复制
declare @tmp integer = null

select case when @tmp = null then 1 when @tmp is null then 2 else 3 end 

-- Result is 2

预期结果为% 1,但返回的是%2。

EN

回答 1

Stack Overflow用户

发布于 2019-05-15 03:44:02

这是因为您假设@tmp = null是比较@tmpNULL的值的有效方法。

实际上,您应该使用IS NULL来测试NULL值:

代码语言:javascript
复制
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之间的相等比较始终为false。

如果为SET ANSI_NULLS OFF,则@tmp = NULL返回true。但是,我建议不要使用这种方法

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56137545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档