Oracle-Decode()函数和CASE语句的区别: 具体示例如下: 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’ } 虽然在上面的示例中,两者看似都可以实现。但在遇到特殊情况时,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会更加方便一些。
本文转自茄子_2008博客园博客,原文链接:http://www.cnblogs.com/xd502djj/archive/2010/08/11/1797579.html,如需转载请自行联系原作者。