且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Oracle-Decode()函数和CASE语句的不同

更新时间:2022-08-19 07:44:49

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,如需转载请自行联系原作者。