Oracle Decode()函數和CASE語句的比較

Oracle Decode()函數和CASE語句都是我們經常用到的,那麼它們的區別在哪裏呢?下面就爲您詳細介紹Oracle Decode()函數和CASE語句的區別,供您參考。
  首先,舉2個簡單的例子,簡單對比一下這2者的區別。
  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’)

  FROMDUAL
  後臺實現:
  以下是代碼片段:
  switch ( SIGN(5 – 5) )

  {

  
case 1 : 'Is Positive'break;

  
case 2 : 'Is Negative'break;

  
default : ‘Is Zero’

  }
  在上面的例子中,2者似乎都可以實現。但是,在碰到非凡的問題時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更爲簡潔。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章