DECODE函数是ORACLE PL/SQL是功能强大的函数之一目前还只有ORACLE公司的SQL提供了此函数其他数据库厂商的SQL实现还没有此功能DECODE有什么用途呢?先构造一个例子假设我们想给智星职员加工资其标准是工资在元以下的将加%工资在元以上的加%通常的做法是先选出记录中的工资字段值? select salary into varsalary from employee然后对变量varsalary用ifthenelse或choose case之类的流控制语句进行判断如果用DECODE函数那么我们就可以把这些流控制语句省略通过SQL语句就可以直接完成如下
select decode(sign(salary )salary*salary*salary) from employee是不是很简洁?
DECODE的语法DECODE(valueifthenifthenifthen……else)表示如果value 等于if时DECODE函数的结果返回then……如果不等于任何一个if值则返回else初看一下DECODE 只能做等于测试但刚才也看到了我们通过一些函数或计算替代value是可以使DECODE函数具备大于小于或等于功能
decode()函数使用技巧
decode(条件值翻译值值翻译值……值n翻译值n缺省值)
该函数的含义如下
IF 条件=值 THEN RETURN(翻译值)
ELSIF 条件=值 THEN RETURN(翻译值)
……
ELSIF 条件=值n THEN RETURN(翻译值n)
ELSE RETURN(缺省值)
END IF
使用方法
比较大小select decode(sign(变量变量)变量变量) from dual ——取较小值sign()函数根据某个值是正数还是负数分别返回
例如变量=变量=则sign(变量变量)返回decode解码结果为变量达到了取较小值的目的