害人的null值,在SQLserver中。

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

茂名网站制作公司哪家好,找创新互联建站!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设等网站项目制作,到程序开发,运营维护。创新互联建站于2013年创立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联建站

因为在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
)


文章题目:害人的null值,在SQLserver中。
文章网址:http://www.hxwzsj.com/article/chsccj.html
Copyright © 2025 青羊区翔捷宏鑫字牌设计制作工作室(个体工商户) All Rights Reserved 蜀ICP备2025123194号-14
友情链接: 重庆网站制作 网站设计 网站建设公司 重庆企业网站建设 营销型网站建设 网站制作 网站建设开发 企业网站建设 企业网站设计 成都网站设计 成都网站建设公司 成都网站制作公司 成都网站制作 上市集团网站建设 手机网站制作 泸州网站建设 定制网站建设 成都网站建设 网站建设方案 四川成都网站设计 企业网站设计 成都网站建设