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”,达到了取较小值的目的。
总之,明白了就很简单。。