数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

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


发布日期:2020年06月04日
 
Oracle Decode()函数和CASE语句的比较

Oracle Decode()函数和CASE语句都是我们经常用到的那么它们的区别在哪里呢?下面就为您详细介绍

Oracle Decode()函数和CASE语句的区别供您参考

首先个简单的例子简单对比一下这者的区别

CASE语句

以下是代码片段

SELECTCASESIGN()

WHENTHENIs Positive

WHENTHENIs Negative

ELSEIs ZeroEND

FROMDUAL;

后台实现

以下是代码片段

if(SIGN()=) {

Is Positive;

}elseif(SIGN()=) {

Is Negative;

}else{

‘IsZero’

}

Decode函数

以下是代码片段

SELECTDECODE(SIGN()

Is PositiveIs Negative ‘IsZero’)

FROMDUAL

后台实现

以下是代码片段

switch (SIGN() )

{

case:Is Positive;break;

case:Is Negative;break;

default: ‘IsZero’

}

在上面的例子中者似乎都可以实现但是在碰到非凡的问题时Decode()要实现起来就相当复杂了

例如

以下是代码片段

SELECTCASEXFIELD

WHENXFIELD<THEN‘XFIELD<

WHENXFIELD<THEN‘XFIELD<

WHENXFIELD<THEN‘XFIELD<

ELSE‘UNBEKNOWN’END

FROMDUAL

因此个人认为CASE语句在处理类似问题就显得非常灵活当只是需要匹配少量数值时用Decode更为简洁

上一篇:Oracle9i iSQL*PLUS的配置过程

下一篇:Oracle] Data Guard 之 三种保护模式介绍