Oracle函數之case和decode的用法差別及性能比較,來實作邏輯判斷。Oracle的DECODE函數功能很強,靈活運用的話可以避免多次掃描,從
在Oracle世界,你可以使用:
1)case表達式 或者
2)decode函數
來實作邏輯判斷。Oracle的DECODE函數功能很強,靈活運用的話可以避免多次掃描,進而提高查詢的性能。而CASE是9i以後提供的文法,這個文法更加的靈活,提供了IF THEN ELSE的功能。
case表達式
case表達式,可分兩種,簡單和搜尋,簡單case後接表達式,如:
對于簡單的case需要幾點注意:
1)尋找when的優先級:從上到下
2)再多的when,也隻有一個出口,即其中有一個滿足了expr就馬上退出case
3)不能把return_expr和else_expr指定為null,而且,,expr、comparison_expr和return_expr的資料類型必須相同。
搜尋case:
CASE WHEN condition THEN return_expr
[WHEN condition THEN return_expr]
...
ELSE else_expr
END
例子:
用decode可以違反第3NF(行不可再分,列不可再分,列不可重複):列重複
本文原創釋出php中文網,轉載請注明出處,感謝您的尊重!