萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> oracle教程 >> Oracle Decode()函數和CASE語句的比較

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更為簡潔。

copyright © 萬盛學電腦網 all rights reserved