最近在写sql语句的时候,发现decode()这个函数确实很强大,方便。
--DECODE() 目前只有oracle提供这个函数DECODE() 相当于一条件语句(IF).它将输入数值与函数中的参数列表相比较,根据输入值返回一个对应值。函数的参数列表是由若干数值及其对应结果值组成的若干序偶 形式。当然,如果未能与任何一个实参序偶匹配成功,则函数也有默认的返回值。区别于SQL的其它函数,DECODE函数还能识别和操作空值.其具体的语法格式如下:DECODE(input_value,value,result[,value,result…][,default_result]);其中:input_value 试图处理的数值。DECODE函数将该数值与一系列的序偶相比较,以决定最后的返回结果value 是一组成序偶的数值。如果输入数值与之匹配成功,则相应的结果将被返回。对应一个空的返回值,可以使用关键字NULL于之对应result 是一组成序偶的结果值default_result 未能与任何一序偶匹配成功时,函数返回的默认值下面的例子说明了,如何读取用户CHECKUP表SEAPARK中的BLOOD_TEST_FLAG列下的项目,作为DECODE函数的实参支持值。SELECT checkup_type,DECODE(blood_test_flag,’Y’,’Yes’,’N’,’No’,NULL,’None’,’Invalid’) decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)--该函数的含义如下:if 条件 =值1 then return (翻译值1) else if 条件=值2 then return(翻译值2) ... else if 条件=值n then return(翻译值n) else return(缺省值) end if--实例1 其标准是:工资在8000元以下的将加20%;工资在8000元以上的加15%
select decode(sign(salary - 8000),1,salary*1.15,-1,salary*1.2,salary from employee--1.比较大小
select decode(sign(变量1-变量2),-1,变量1,变量2) from dual;--取较小值 sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1
-- 例如:变量1=10,变量2=20 则sign(变量1-变量2)返回-1,decode解码结果为“变量1”,达到了取较小值的目的
转载于:https://www.cnblogs.com/crystal-guoguo/archive/2013/02/27/2935014.html
