当前位置:  开发笔记 > 数据库 > 正文

SQL不等于&null

如何解决《SQL不等于&null》经验,为你挑选了1个好方法。

我们想写这个查询:

select * from table 
where col1 != 'blah' and col2 = 'something'

我们希望查询包含col1为null的行(而col2 ='something').目前,查询不会对col1为null的行执行此操作.以下查询是最好还是最快的方法吗?

select * from table 
where (col1 != 'blah' or col1 is null) and col2 = 'something'

或者,如果需要,我们可以将所有col1 null值更新为空字符串.这会是一个更好的方法吗?然后我们的第一个查询将工作.


更新:Re:使用NVL:我在另一篇文章中读到,从性能角度来看,这不是一个很好的选择.



1> Thilo..:

在Oracle中,空字符串和NULL之间没有区别.

这是公然无视SQL标准,但你去...

除此之外,你无法与"普通"运算符比较NULL(或非NULL):"col1 = null"不起作用,"col1 =''"不起作用,"col1!= null"将不起作用,你必须使用"是null".

所以,不,你不能以任何其他方式使这项工作,然后"col 1为null"或其中的一些变化(例如使用nvl).

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有