害人的null值,在SQL server 中。

  • 作者:新网
  • 来源:新网
  • 2006-06-27 15:31:00

我们知道在sql server 中,有一个 NULL表示为空,这个null要是处理不好,可是要害死人的 :) 因为在sql servel 中 如果你拿一个值去和null值, 不管是用等于,还是不等于,它均返回false    举例来说就是:           ...

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

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

t0185cbf72595dde034.jpg

举例来说就是:
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
)

 

免责声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,也不承认相关法律责任。如果您发现本社区中有涉嫌抄袭的内容,请发送邮件至:operations@xinnet.com进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

相关文章

免费咨询获取折扣