日期:2014-05-16  浏览次数:20437 次

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;

???????????????

NUM
60
70
80
90

??????

???????? select decode(sign(num-80),1,num+2,-1,num+5,num) as?new_num?from students;

?

NEW_NUM
62
73
80
95

????? sign函数: 当括号中的表达式返回值大于0时,函数值返回1,表达式返回值小于0时,函数值返回-1,否则返回0.

?

?

?????? 意思是,成绩小于80的,加上2,成绩大于80的,加上5,否则不加。

?

???

???????

?