Oracle中decode函数的使用
含义解释:
DECODE(条件,值1,结果值1,值2,结果值2,...值n,结果值n,缺省值)该函数的含义如下:
IF 条件=值1 THEN
RETURN(结果值1)
ELSIF 条件=值2 THEN
RETURN(结果值2)
......
ELSIF 条件=值n THEN
RETURN(结果值n)
ELSE
RETURN(缺省值)
END IF
使用方法:
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”,达到了取较小值的目的。
举一个例子说明:
??????? 不使用decode函数,
??????????select? num from students;
???????????????
NUM60708090??????
???????? select decode(sign(num-80),1,num+2,-1,num+5,num) as?new_num?from students;
?
NEW_NUM62738095????? sign函数: 当括号中的表达式返回值大于0时,函数值返回1,表达式返回值小于0时,函数值返回-1,否则返回0.
?
?
?????? 意思是,成绩小于80的,加上2,成绩大于80的,加上5,否则不加。
?
???
???????
?