DECODE 与CASE WHEN 的比较以及用法

1.DECODE 只有Oracle 才有,其它数据库不支持;
2.CASE WHEN的用法, Oracle、SQL Server、 MySQL 都支持;
3.DECODE 只能用做相等判断,但是可以配合sign函数进行大于,小于,等于的判断,CASE when可用于=,>=,<,<=,<>,is null,is not null 等的判断;
4.DECODE 使用其来比较简洁,CASE 虽然复杂但更为灵活;
5.另外,在decode中,null和null是相等的,但在case when中,只能用is null来判断,示例如下:
emp表中有一列comm,如果这列为null,则显示为0,否则,显示为原值:

用法

CASE WHEN:

单条件

CASE 
WHEN  MAIL_FLAG = '1'  THEN  '已发放'
WHEN  MAIL_FLAG = '0'  THEN  '未发放'

ELSE   ''
END AS MAIL_FLAG

多条件

CASE 
WHEN  MAIL_FLAG = '1'  AND  STATUS = '1'  THEN  '已发放' 
WHEN  MAIL_FLAG = '0'  AND  STATUS = '0'  THEN  '未发放'

ELSE   ''
END AS MAIL_FLAG

 

DECODE:

DECODE(MAIL_FLAG,'1','已导出','0','未导出 ' ) AS  MAIL_FLAG

DECODE(条件,值1,返回值1,值2,返回值2.....)

条件=值1 返回值1

条件=值2 返回值2

...........................

转载于:https://www.cnblogs.com/suxiaBlogs/p/7071953.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值