Oracle-Decode()函数和CASE语句的比较

文章作者 100test 发表时间 2007:06:08 11:29:50
来源 100Test.Com百考试题网


本文讲述了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’)

FROM DUAL

后台实现:

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更为简洁。


src="/linux/js/wxgg_linux.js">

相关文章


oracle自定义函数的执行时间[2]
oracle自定义函数的执行时间[1]
Oracle-Decode()函数和CASE语句的比较
Oracle-Decode()函数和CASE语句的比较
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛