case when 与 decode 用法


case when 在不同条件需要有不同返回值的情况下使用非常方便,可以在给变量赋值时使用,也可以在select查询语句中使用。
case搜索语句格式:

case
 when 条件1 then 返回值1
 when 条件2 then 返回值2
 ...
 else 返回值N 

end;

case when使用示例代码:

select empno,ename,job,
       case 
         when sal between 0 and 1500 
           then 'low salary'
         when sal between 1500 and 3000
           then 'middle salary'
         when sal between 3000 and 5000
           then 'high salary'
       end case 
from emp

用case when处理空值:

select case 
       when comm is null 
         then 0
       else comm
       end comm
 from emp

decode的使用格式:decode(变量或表达式,值1,返回值1,值2,返回值2,...,默认值)

decode使用示例代码:

select empno,ename,job,
       decode(job,'CLERK','low degree',
              'SALESMAN','middle degree',
              'others')  degree
from emp   

decode处理空值:

SELECT empno,ename,
       decode(comm,NULL,0,comm)
FROM emp

case when 和decode的比较:

一、decode是pl/sql语法,只能在oracle中使用,casewhen是标准SQL的语法,哪儿都能用,也就是说移植性更强.

二、case 里可以写>,in等表达式,decode只是=

三、建函数索引的时候用decode比较好,oracle会自动转换case when导致无法使用到索引
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值