SQL ServerDECODE 与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

………………………

相关文章