Oracle“不等于号”与Null的情况
生活随笔
收集整理的這篇文章主要介紹了
Oracle“不等于号”与Null的情况
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
今天突然才發(fā)現(xiàn),Oracle中的“不等于操作符”是忽略Null的。
比如,查詢comm不等于的300的記錄,我會理所當然地使用where comm != 300
預想會返回包含Null的不等于300的記錄(意識里認為Null也是“不等于30”的其中一種情況)。
而實際上,它只返回不為Null且不等于300的記錄,見如下測試。
使用SCOTT的公共數(shù)據(jù)測試:
--All data select * 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的關系是如此的,其他操作符也類似,只不過“不等于號”使用場景的特殊性讓我們?nèi)菀装l(fā)覺此特性。
其中原因在于Null,關于Null的各種情況說明可見以下Oracle的文檔:
http://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements005.htm
PS,見“寓言因永吟”回復。亦可使用LNNVL方法以解決此問題,具體Oracle文檔描述如下:
http://docs.oracle.com/cd/E11882_01/server.112/e26088/functions091.htm
總結(jié)
以上是生活随笔為你收集整理的Oracle“不等于号”与Null的情况的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 致各位读者,关于资源的问题
- 下一篇: We重邮