回答
你可以用NVL包裹,並將其設置爲不期望在您所設定的某個值:
NVL(a,0) = NVL(b,0)
如果A爲0且B爲空,則結果不同。 –
我認爲海特克暗示'0'是這個集合中沒有預期的價值。我認爲這是一個很好的例子,說明如何使代碼保留SQL註釋。這是有效的,但對程序員/維護人員來說,瞭解該領域的可能價值很重要;這可能是我避而遠之的原因 – vol7ron
您可以:
a=b or coalesce(a,b) is null
你也可以使用nvl
,但是傳統功能,並且3210更快,因爲它停在第一個非空
您可以使用DECODE(A,B,1) = 1
DECODE在處理NULL時是不規則的。
但是我認爲目的不清楚並且更喜歡vol7ron的回答。清晰度最小化打字!
'decode'非常有趣的用法; +1 – vol7ron
- 1. 在SQL比較中比較空值
- 2. SQL:比較和空值
- 3. Oracle SQL - 比較行
- 4. Oracle SQL - 比較列
- 5. 的Oracle SQL比較表
- 6. oracle 11g sql比較大數值
- 7. Oracle SQL,根據空值選擇並比較日期
- 8. SQL比較和空值的問題
- 9. ORACLE SQL CSV列比較
- 10. 比較2長行Oracle Sql
- 11. Oracle SQL比較日期
- 12. 比較SQL(Oracle)中的時鐘時間
- 13. SQL Server和Oracle中的比較表
- 14. 比較SQL中的Oracle表列
- 15. 比較sql值
- 16. 在SQL Plus中比較兩個不同表中的值Oracle
- 17. 比較oracle中的列字符串值
- 18. 比較Oracle中的值時出錯
- 19. 轉置並比較oracle中的列值
- 20. 如何才能比較oracle中可能的空值?
- 21. SpEL - 空值比較
- 22. 在SQL Developer中比較Oracle數據庫
- 23. Oracle SQL用於比較同一列中的數值
- 24. Oracle SQL:比較2列中的所有值並交換它們
- 25. SQL比較varchar值
- 26. 在Oracle SQL中查找每行中空值的百分比
- 27. 的Oracle SQL Developer比較行時
- 28. C#比較sql datetime爲空
- 29. Oracle日期比較
- 30. Oracle比較問題
[在SQL中獲取null == null]的可能重複(http://stackoverflow.com/questions/191640/get-null-null-in-sql)。請注意,一般來說,雖然有更簡單的方法來編寫它,但它可能是最有效的方法,因爲沒有函數引用。 – DCookie
我很好奇,如果那是真的,僅僅因爲'null'沒有括號,並不意味着函數沒有被調用;畢竟,比較仍然執行。我敢打賭,db已經爲'coalesce'優化過,因爲它經常被使用。我並不是說你錯了,只是用新的數據庫引擎進行基準測試會很有趣。 – vol7ron
剛剛在11g實例上進行了測試。雖然不那麼戲劇性,但合併使用了大約10%以上的CPU。 – DCookie