Oracle Decode()函數和CASE語句都是我們經常用到的那麼它們的區別在哪裡呢?下面就為您詳細介紹
Oracle Decode()函數和CASE語句的區別供您參考
首先舉個簡單的例子簡單對比一下這者的區別
CASE語句
以下是代碼片段
SELECT CASE SIGN(
)
WHEN
THEN
Is Positive
WHEN
THEN
Is Negative
ELSE
Is Zero
END
FROM DUAL;
後台實現
以下是代碼片段
if (SIGN(
–
) =
) {
Is Positive
;
} else if (SIGN(
–
) =
) {
Is Negative
;
}else {
‘Is Zero’
}
Decode函數
以下是代碼片段
SELECT DECODE(SIGN(
–
)
Is Positive
Is Negative
‘Is Zero’)
FROMDUAL
後台實現
以下是代碼片段
switch ( SIGN(
–
) )
{
case
:
Is Positive
; break;
case
:
Is Negative
; break;
default : ‘Is Zero’
}
在上面的例子中者似乎都可以實現但是在碰到非凡的問題時Decode()要實現起來就相當復雜了
例如
以下是代碼片段
SELECT CASE X
FIELD
WHEN X
FIELD <
THEN ‘X
FIELD <
’
WHEN X
FIELD <
THEN ‘X
FIELD <
’
WHEN X
FIELD <
THEN ‘X
FIELD <
’
ELSE ‘UNBEKNOWN’END
FROM DUAL
因此個人認為CASE語句在處理類似問題就顯得非常靈活當只是需要匹配少量數值時用Decode更為簡潔
From:http://tw.wingwit.com/Article/program/Oracle/201311/19030.html