decode定义:
decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)
1、假设在数据中某列(表名:tbl,列名:col)的记录中分别用R,Y,G来代表红,黄,绿,希望查询的出来的结果不是用字母而是用汉字显示。
使用decode实现:
SELECT decode(
col,'R','红',(decode(
col,'G','绿',decode(
col,'Y','黄','未知'
)
)
)
)
FROM tbl
这个看起来比较繁琐,下面的同样可以达到目的
SELECT decode(col,'R','红','G','绿','Y','黄','未知') FROM tbl
使用case when 实现:
SELECT
cc,
CASE WHEN col = 'R'
THEN '红'
ELSE CASE WHEN col = 'G'
THEN '绿'
ELSE CASE WHEN col = 'Y'
THEN '黄'
ELSE '未知'
END
END
END
FROM
tbl
另外一个比较大小的例子:
select decode(sign(变量1-变量2),-1,变量1,变量2) from dual; --取较小值
注意:sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1
case when 实现(不使用sign()函数)
select
case when 变量1 < 变量2 then 变量1 else 变量2 end
from dual;