decode函数可以对查询的结果进行替换,decode 实际上的功能和if语句类似。

decode(var,var1,value1,var2,value2,var3,value3) 等价于 if var=var1 then ...else if var=var2 then ...else var=var3 then ...

但是仅限于等于情况,如果是判断大于小于的情况,比如if a>b这种情况,仅仅使用decode是无法实现的,需要加入sign()函数。

sign函数的功能很简单,sign(var),如果var>0,返回1,如果var<0,返回-1,如果var=0,返回0,就可以对a>b这种情况做如下改写:

decode(sign(a-b),-1,'a<b',0,'a=b',1,'a>b');