ORACLE DECODE()函数的使用

Share

  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 />&nbsp;&nbsp;case if1:<br />&nbsp;&nbsp;&nbsp;&nbsp;then1;<br />&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;case if2:<br />&nbsp;&nbsp;&nbsp;&nbsp;then2;<br />&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;case if3:<br />&nbsp;&nbsp;&nbsp;&nbsp;then3;<br />&nbsp;&nbsp;&nbsp;&nbsp;break;&nbsp;&nbsp;<br />&nbsp;&nbsp;......<br />&nbsp;&nbsp;default:<br />&nbsp;&nbsp;&nbsp;&nbsp;else;<br />}<br />//或者是:<br />if(value == if1)<br />&nbsp;&nbsp;return then1;<br />else if(value == if2)<br />&nbsp;&nbsp;return then2;<br />else if(value == if3)<br />&nbsp;&nbsp;return then3;<br />else<br />&nbsp;&nbsp;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”,达到了取较小值的目的。

总之,明白了就很简单。。