我们知道在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
)
微软效仿谷歌新注4域名 或升级Hotmailphp如何修改上传图片大小站长做网商的八大绝对优势营业执照上面的法人是人名帐号姓名注册时随便写帮改个朱超超可以如何选择可靠的嘉兴网站建设公司高品质网站制作如何打造 网站制作流程云服务器建站怎么弄有没有详细一点的