Oracle Decode()函数和CASE语句都是我们经常用到的那么它们的区别在哪里呢?下面就为您详细介绍
Oracle Decode()函数和CASE语句的区别供您参考
首先举个简单的例子简单对比一下这者的区别
CASE语句
以下是代码片段
SELECTCASESIGN(
)
WHEN
THEN
Is Positive
WHEN
THEN
Is Negative
ELSE
Is Zero
END
FROMDUAL;
后台实现
以下是代码片段
if(SIGN(
–
)=
) {
Is Positive
;
}elseif(SIGN(
–
)=
) {
Is Negative
;
}else{
‘IsZero’
}
Decode函数
以下是代码片段
SELECTDECODE(SIGN(
–
)
Is Positive
Is Negative
‘IsZero’)
FROMDUAL
后台实现
以下是代码片段
switch (SIGN(
–
) )
{
case
:
Is Positive
;break;
case
:
Is Negative
;break;
default: ‘IsZero’
}
在上面的例子中者似乎都可以实现但是在碰到非凡的问题时Decode()要实现起来就相当复杂了
例如
以下是代码片段
SELECTCASEX
FIELD
WHENX
FIELD<
THEN‘X
FIELD<
’
WHENX
FIELD<
THEN‘X
FIELD<
’
WHENX
FIELD<
THEN‘X
FIELD<
’
ELSE‘UNBEKNOWN’END
FROMDUAL
因此个人认为CASE语句在处理类似问题就显得非常灵活当只是需要匹配少量数值时用Decode更为简洁