摘要:我们知道在sql server 中,有一个 NULL表示为空,这个null要是处理不好,可是要害死人的 :) 因为在sql servel 中 如果你拿一个值去和null值, 不管是用等于,还是不等于,它均返回false 举例来说就是: select aa where aa
我们知道在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
)
相关文章推荐
智能手机建站的优点是什么?网站页面布局有哪些关键点? 2022-01-10
2022年中国云计算面临的问题及发展前景预测分析2021-12-28
绿色智能基础设施连接可持续未来-IDCC2021万国数据第一代Smart DC发布会议程揭晓2021-12-27
阿里云:早期未意识到Apache log4j2漏洞情况的严重性 将强化漏洞管理2021-12-27
云计算开发:Python3-replace()方法详解2021-12-27