decode函数oracle,【原创】Oracle DECODE 函数解释与用法

语法

34764c115fde

image

用途

DECODE将expr与每个搜索值逐一进行比较。如果expr等于搜索值,则Oracle数据库返回相应的结果。如果找不到匹配,则Oracle返回默认值。如果省略默认值,那么Oracle返回null。

按照自己的理解DECODE函数就是把某列按照一定的条件转换成另外一个值

假如有一下表格(Scores):

ID

Age

Sex

Score

City

1

18

1

90

028

2

30

0

60

010

3

40

1

55

020

4

60

0

70

021

其中Age=1是男,Age=0是女。如果我们想让表格的数据更加直观可以这样写:

select ID,

Age,

DECODE(Sex,

1,'男',

0,'女',

'未知性别') Sex,

Score,

DECODE(City,

'028','成都',

'010','北京',

'020','广东',

'021','上海',

'未知') City

from Scores;

转换后的表格:

ID

Age

Sex

Score

City

1

18

90

成都

2

30

60

北京

3

40

55

广东

4

60

70

上海

DECODE行转列操作

本文章使用Oracle Live Sql,具体可以登录此网站查看使用详情。本文章使用EMP表做演示。

34764c115fde

image.png

如何统计出每个部门的人数

10号部门人数

20号部门人数

30号部门人数

3

5

6

select SUM(DECODE(DEPTNO,10,1,0)) "10号部门人数",

SUM(DECODE(DEPTNO,20,1,0)) "20号部门人数",

SUM(DECODE(DEPTNO,30,1,0)) "30号部门人数"

from EMP;

DECODE(DEPTNO,10,1,0) 将DEPTNO==10的这列的值转换成1,如果DEPTNO!=10,那么这列的值转换为0. 然后用求和函数SUM求出10号部门人数。如果将SQL语句改成,会发生什么:

select SUM(DECODE(DEPTNO,10,2,0)) "10号部门人数",

SUM(DECODE(DEPTNO,20,0,1)) "20号部门人数",

SUM(DECODE(DEPTNO,30,1,0)) "30号部门人数"

from EMP;

10号部门人数

20号部门人数

30号部门人数

6

9

6

解析

select SUM(DECODE(DEPTNO,10,2,0)) "10号部门人数", --将这列的值转换为2

SUM(DECODE(DEPTNO,20,0,1)) "20号部门人数", --不等于20号部门的人数,实际上就是10号和30号部门的人数

SUM(DECODE(DEPTNO,30,1,0)) "30号部门人数"

from EMP;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值