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更为简洁。
相关文章
标签:Oracle