參照以前的question,我想知道如果它總是能夠通過CASE更換DECODE,哪一個是獲得更好的性能?CASE與DECODE
回答
一如既往地與甲骨文... ... AskTom
從這個post ...
解碼是有點模糊 - CASE是 非常非常清楚。 容易做的解碼很容易做在 CASE,難以或接近 難以解碼的事情很容易 在CASE做。 CASE,邏輯明智,贏得 手。
從性能的角度來看,它們似乎差不多,上面的文章提到了一些速度差異,但沒有對特定語句進行基準測試,這很難說。
另一點來自同一篇文章:「解碼是Oracle在8.1.6之前提供的數據庫版本的功能 從816開始,CASE是實現相同的結果「 - 因此,當使用舊版本的Oracle時,CASE可能不可用。 – 2010-07-07 10:11:51
8.1.6很老,我覺得8.1.6的日期從1999年開始。 – TTT 2010-07-07 13:42:50
謝謝@TTT,這很有趣。我剛被僱用將Cognos 7報告轉換爲Cognos 10 :)。現在看看將DECODE語句切換到CASE。 – 2017-01-27 20:52:08
DECODE
和CASE
之間有一個很大的區別,它與如何比較NULLs
有關。如果將NULL
與NULL
進行比較,則DECODE
將返回「true」。 CASE
不會。例如:
DECODE(NULL, NULL, 1, 0)
將返回'1'。
CASE NULL
WHEN NULL THEN 1
ELSE 0
END
將返回'0'。你將不得不把它寫成:
CASE
WHEN NULL IS NULL THEN 1
ELSE 0
END
我認爲這是一個非常重要的區別。我剛剛閱讀了解碼,試圖用大小寫替換它,並想知道爲什麼當列值爲null時我看不到相同的結果。感謝澄清這一點! – prabhu 2014-11-25 10:15:10
select (DECODE(NULL, NULL, 1, 0)) from dual;
select (CASE
WHEN NULL IS NULL THEN 1
ELSE 0
END
)
from dual;
都返回1
什麼都沒有被Cheran回答。 – ceving 2017-01-02 09:39:10
CASE是一個語句和解碼是一個功能 我們可以使用CASE在where子句中,不能使用DECODE在where子句中。 DECODE只能在CASE可以支持所有關係運算符的情況下檢查相等運算符 DECODE只能在sql中使用,因爲CASE可以在SQL和PL/SQL中使用 CASE比DECODE更好。
你可以找到更多:http://www.oracleinformation.com/p/sql-tutorial.html
-1代表「...並且不能在where子句中使用DECODE。「DECODE是一個函數,每個函數都有一個返回值,您可以使用該返回值來檢查其他值: DECODE(tbl.field,SearchList,SomeConstOrAField,默認)NOT IN(其他列表) 或 解碼(tbl.field,SearchList,SomeConstOrAField,默認)=東西 等 – 2017-05-16 06:53:29
- 1. Perl:utf8 :: decode與Encode :: decode
- 2. PowerShell的CASE/DECODE風格命令?
- 3. .decode( 'UTF-8')或.decode()
- 4. 在Oracle SQL中將CASE函數更改爲DECODE函數
- 5. 是一個CASE語句和一個DECODE等價物嗎?
- 6. LINQ to SQL與where case case
- 7. AS3 - 是否有與BitmapData.encode()等效的decode()?
- 8. SQL DECODE優化
- 9. DECODE在ORACLE
- 10. 替代System.Web.HttpUtility.HtmlEncode/Decode?
- 11. delphi crypto api decode
- 12. JSON DECODE Assoc Array
- 13. extjs json decode
- 14. GOLANG xml decode
- 15. php json decode
- 16. Python:base64.b64decode()vs .decode?
- 17. PHP stdclass json decode
- 18. Encog One Of - decode
- 19. php youtube json decode
- 20. DECODE - REMOVE NULL值
- 21. bigquery url decode
- 22. WHERE CASE與DATEADD
- 23. 與Case語句
- 24. Decode G711(PCM u-law)
- 25. Decode Hash :: MultiValue in perl
- 26. endian-independent base64_encode/decode function
- 27. NoSuchMethodError:Android上的org.apache.commons.codec.binary.Base64.decode
- 28. Oracle DECODE不工作
- 29. Python SHA1 DECODE函數
- 30. FFmpeg remux without decode/encode
我只是用Google搜索「甲骨文案VS解碼」,發現了很多環節。基本上情況是更好的可讀性,更靈活,更標準 – Rene 2010-07-07 10:01:45