首页 > 代码库 > Oracle“不等于号”与Nulls的情况(转)
Oracle“不等于号”与Nulls的情况(转)
今天突然才发现,Oracle中的“不等于操作符”是忽略null的。
比如,查询comm不等于的300的记录,我会理所当然地使用where comm != 300
预想会返回包含null的不等于300的记录(意识里认为null也是“不等于30”的其中一种情况)。
而实际上,它只返回不为null且不等于300的记录,见如下测试。
使用SCOTT的公共数据测试:
--All dataselect * from scott.emp t;--Not equal 300(Not contain null)select * from scott.emp t where t.comm != 300;--Not equal 300(Does contain null)select * from scott.emp t where t.comm != 300 or t.comm is null;TEST
只返回comm不为null并且不等于300的记录。
事实上,并不仅仅“不等于号”与Null的关系是如此的,其他操作符也类似,只不过“不等于号”使用场景的特殊性让我们容易发觉此特性。
其中原因在于Null,关于Null的种种情况可见以下Oracle的文档:
http://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements005.htm
http://www.cnblogs.com/nick-huang/p/3921605.html
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。