等同decode函数的case when 语句

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;
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值