【背景】
对某业务数据处理时,需要判断两个数据字段的大小,保留较大的数据存入到指定字段下面。考虑使用decode函数和sign函数来实现这个目的。
【解决】
1、decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)
2、sign()函数:根据某个值是0、正数、负数,分别返回0、1、-1
3、为获得两个字段的较大值或较小值:
A>B, A-B>0, sign(A-B)=1, 获得大值即A, decode(sign(A-B),1,A,B)
A<B, A-B<0, sign(A-B)=-1, 获得小值即A, decode(sign(A-B),-1,A,B)
【实验】
先利用续表来实验一下效果,如下:
select decode(sign(66-88),-1,66,88)