Oracle-Decode()函數(shù)和CASE語句有哪些不同
具體示例如下:
1.CASE語句:
SELECT CASE SIGN(5 - 5)
WHEN 1 THEN 'Is Positive'
WHEN -1 THEN 'Is Negative'
ELSE 'Is Zero' END
FROM DUAL;
后臺(tái)實(shí)現(xiàn):
if (SIGN(5 – 5) = 1) {
'Is Positive';
} else if (SIGN(5 – 5) = 2 ) {
'Is Negative';
}else {
‘Is Zero’
}
2. Decode函數(shù):
SELECT DECODE(SIGN(5 – 5), 1, 'Is Positive', -1, 'Is Negative', ‘Is Zero’)
FROM DUAL
后臺(tái)實(shí)現(xiàn):
switch ( SIGN(5 – 5) )
{
case 1 : 'Is Positive'; break;
case 2 : 'Is Negative'; break;
default : ‘Is Zero’
}
雖然在上面的示例中,兩者看似都可以實(shí)現(xiàn)。但在遇到特殊情況時(shí),Decode()的實(shí)現(xiàn)就相對(duì)復(fù)雜得多了。
例如:
SELECT CASE X-FIELD
WHEN X-FIELD < 40 THEN ‘X-FIELD < 40’
WHEN X-FIELD < 50 THEN ‘X-FIELD < 50’
WHEN X-FIELD < 60 THEN ‘X-FIELD < 60’
ELSE ‘UNBEKNOWN’END
FROM DUAL
相對(duì)而言,CASE語句在處理相似問題就顯得比較簡(jiǎn)捷靈活。另外,當(dāng)需要匹配少量數(shù)值時(shí),選用Decode會(huì)更加方便一些。
