暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle decode和case

自学Oracle 2018-06-29
569

decode

decode(value,if1,then1,if2,then2,if3,then3,...,else)

value表示表中的任意一列(不考虑数据类型)或任意计算结果。每一行都对value进行测试,如果value符合条件if1,这decode的结果为then1;如果value符合条件if2,这decode的结果为then2;如果value与任意一个if都不符,则decode的结果为else。

1、通过decode替换值

decode(列,'条件','替换值','否则值')

2、decode中可以嵌套decode

decode(列,'条件',decode(列,'条件','替换值','否则值'),'否则值')

3、decode中的大于和小于

最简单的方法是使用sign函数。如果返回1,数值为正数;如果返回0,数值为0;如果为-1,则数值为负数。

decode(sign(xxxx-5),1,'正数','负数')

4、coalesce

coalesce将返回在值列表中遇到的第一个非null值。

coalesce(column1,column2,...)


case

select case aaa

            when 1 then '1'

            when 2 then '2'

            when 3 then '3'

esle 4

end

from test;

1、case 与用法decode类似

2、case也可以嵌套case


pivot

可以使用pivot运算符和unpivot运算符处理交叉表数据。在交叉表报表中,行数据显示为单独的列。

select * from (select aa,bb from test t1) pivot (max(aa) for cc in ('xx','yy'));

unpivot执行与pivot相反的功能,是将列转换为行。

使用pivot和unpivot运算符可以将列转换为行或将行恢复为列,它们与decode和case操作符联合起来使用,可以为数据的显示和操纵提供强大的工具。


本公众号是个人学习工作笔记,希望大家发现问题能及时和我本人沟通,希望你与我共同成长。个人微信zgtj12306。

 

欢迎关注“自学Oracle”


文章转载自自学Oracle,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论