1818IP-服务器技术教程,云服务器评测推荐,服务器系统排错处理,环境搭建,攻击防护等

当前位置:首页 - 数据库 - 正文

君子好学,自强不息!

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

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

1.CASE语句:

SELECTCASESIGN(5-5) 
WHEN1THEN'IsPositive' 
WHEN-1THEN'IsNegative' 
ELSE'IsZero'END 
FROMDUAL;

后台实现:

if(SIGN(5–5)=1){ 
'IsPositive'; 
}elseif(SIGN(5–5)=2){ 
'IsNegative'; 
}else{ 
‘IsZero’ 
}

2. Decode函数:

SELECTDECODE(SIGN(5–5),1, 
'IsPositive',-1,'IsNegative',‘IsZero’) 
FROMDUAL

后台实现:

switch(SIGN(5–5)) 
{ 
case1:'IsPositive';break; 
case2:'IsNegative';break; 
default:‘IsZero’ 
}

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

SELECTCASEX-FIELD 
WHENX-FIELD<40THEN‘X-FIELD<40’ 
WHENX-FIELD<50THEN‘X-FIELD<50’ 
WHENX-FIELD<60THEN‘X-FIELD<60’ 
ELSE‘UNBEKNOWN’END 
FROMDUAL

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

本文来源:1818IP

本文地址:https://www.1818ip.com/post/10159.html

免责声明:本文由用户上传,如有侵权请联系删除!

发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。