害人的null值,在SQL server 中。

我们知道在sql server 中,有一个 NULL表示为空,这个null要是处理不好,可是要害死人的 :)

因为在sql servel 中 如果你拿一个值去和null值, 不管是用等于,还是不等于,它均返回false

举例来说就是:
select \\\’aa\\\’ where \\\’aa\\\’ <> null
select \\\’aa\\\’ where \\\’aa\\\’ = null

运行以上两句SQL结果查询出来的数据都是空,第一句SQL并没有按预期的显示字符串aa,而要显示出来只有有下面的SQL语句

select \\\’aa\\\’ where \\\’aa\\\’ is not null

还有就是在not in 中如下
select \\\’aa\\\’ where \\\’aa\\\’ not in ( null, \\\’bb\\\’)

按理,应能显示出字符串\\\’aa\\\’,结果却没有显示。因为 \\\’aa\\\’与null的关系既不是相等,也不是不相等。

今天在做查询时就遇到一个相同的问题,如下的查询语句怎么也查不出数据。但一分析数据,又的确能查出

SELECT
*
FROM dbo.CheckVoidSo
WHERE SoNumber NOT IN (
SELECT DISTINCT SoNumber
FROM imk.dbo.DayliProcessCreditForVoidSO

)

最后终于找到原因就是因为子查询是有空值,就是那个空值惹的祸。一排除空值,一切正常。

SELECT *
FROM dbo.CheckVoidSo
WHERE SoNumber NOT IN (
SELECT DISTINCT SoNumber
FROM imk.dbo.DayliProcessCreditForVoidSO
WHERE NOT sonumber IS NULL
)

 

更多关于云服务器域名注册虚拟主机的问题,请访问西部数码官网:www.west.cn

赞(0)
声明:本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-62778877-8306;邮箱:fanjiao@west.cn。本站原创内容未经允许不得转载,或转载时需注明出处:西部数码知识库 » 害人的null值,在SQL server 中。

登录

找回密码

注册