天天看點

mysql case decode,Oracle函數之case和decode的用法差別及性能比較

Oracle函數之case和decode的用法差別及性能比較,來實作邏輯判斷。Oracle的DECODE函數功能很強,靈活運用的話可以避免多次掃描,從

在Oracle世界,你可以使用:

1)case表達式 或者

2)decode函數

來實作邏輯判斷。Oracle的DECODE函數功能很強,靈活運用的話可以避免多次掃描,進而提高查詢的性能。而CASE是9i以後提供的文法,這個文法更加的靈活,提供了IF THEN ELSE的功能。

case表達式

case表達式,可分兩種,簡單和搜尋,簡單case後接表達式,如:

mysql case decode,Oracle函數之case和decode的用法差別及性能比較

對于簡單的case需要幾點注意:

1)尋找when的優先級:從上到下

2)再多的when,也隻有一個出口,即其中有一個滿足了expr就馬上退出case

3)不能把return_expr和else_expr指定為null,而且,,expr、comparison_expr和return_expr的資料類型必須相同。

mysql case decode,Oracle函數之case和decode的用法差別及性能比較

搜尋case:

CASE WHEN condition THEN return_expr

[WHEN condition THEN return_expr]

...

ELSE else_expr

END

例子:

用decode可以違反第3NF(行不可再分,列不可再分,列不可重複):列重複

mysql case decode,Oracle函數之case和decode的用法差別及性能比較

本文原創釋出php中文網,轉載請注明出處,感謝您的尊重!