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