decode()函数是ORACLE PL/SQL是功能强大的函数之一,目前还只有ORACLE公司的SQL提供了此函数,其他数据库厂商的SQL实现还没有此功能。所以,对于新手来说,这个函数还是要知道的。
DECODE的语法:DECODE(value,if1,then1,if2,then2,if3,then3,…,else)
意思是:如果value 等于if1时,DECODE函数的结果返回then1,…,如果不等于任何一个if值,则返回else。类似java里面的流程结构控制的switch.
switch(value){<br />  case if1:<br />    then1;<br />    break;<br />  case if2:<br />    then2;<br />    break;<br />  case if3:<br />    then3;<br />    break;  <br />  ......<br />  default:<br />    else;<br />}<br />//或者是:<br />if(value == if1)<br />  return then1;<br />else if(value == if2)<br />  return then2;<br />else if(value == if3)<br />  return then3;<br />else<br />  return esle;<br />
* 使用方法:
比较大小
select decode(sign(value1-value2),-1,value1,value2) from dual;
sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1
例如:
变量1=10,变量2=20
则sign(value1-value2)返回-1,decode解码结果为“value1”,达到了取较小值的目的。
总之,明白了就很简单。。
