oracle-decode

decode(解码)的作用类似于if条件判断

无论那种用法,都是对原字段的一种判断,并用其它数值进行替换

1
decode(条件,值1,返回值1,值2,返回值2,…值n,返回值n,缺省值)
用法1:对字段的数据进行替换

对日期进行替换,如果日期与今天相等,显示汉字今天,如果日期为明天,则显示汉字明天。

trunc()对日期取整

1
2
select decode(trunc(t.time),trunc(sysdate),'今天',trunc(sysdate+1),'明天') as date 
from mytime t;
用法2:判断字段值是否为空null

sign(value)函数会根据value的值为0,正数,负数,分别返回0,1,-1

如果性别为空,显示汉字暂无数据,其它原样输出

1
2
3
4
5
select t.id,
t.name,
t.age,
decode(t.sex,NULL,'暂无数据',t.sex) as sex
from STUDENT2 t
用法3:比较大小做判断
1
2
3
4
5
6
7
8
9
10
select name,
sal,
decode(sign(sal - 5000),
1,
'高薪',
0,
'高薪',
-1,
decode(sign(sal - 3000), 1, '中等', 0, '中等', -1, '低薪')) as salname
from person;