Oracle DECODE 函数应用示例

/*Decode函数*/
   
--Decode函数的原型为: Decode(testValue, if1, then1, if2,then2.....else).
   --针对testValue进行测试,若testValue等于if1则返回then1,若testValue等于if2则返回then2,....若都没有返回,刚返回else.
   --常见用法是在Oracle中实现行转列(Convert Rows to Columns).

SQL脚本

drop table student;
/
--1.创建表
CREATE TABLE  STUDENT
(
   SID 
VARCHAR(10),
   SName 
varchar(30),
   sex 
varchar2(2DEFAULT '1',
   age 
integer,
   address 
varchar(100),
   
primary key (SID)
);
/
--2.新增数据
Declare
integer:=1;
v_sql 
varchar(1000);
begin
i:
=1;
while i<10 loop
v_sql:
=' insert into student(sid,SName,sex,age,address) values(:1,:2,:3,:4,:5)';
if i<5 then
  
execute immediate  v_sql  using i,'同学'||i,to_char(MOD(i,2)),18,'hunan';
else
  
execute immediate  v_sql  using i,'同学'||i,to_char(MOD(i,2)),19,'sichuan';
end if;
commit;
i:
=i+1;
end loop;
end;
/
commit;
/

--3.调用存储过程
--
==========================================================================================
begin
 InsertTestData(
10);
end;
/

/*Decode函数*/
   
--Decode函数的原型为: Decode(testValue, if1, then1, if2,then2.....else).
   --针对testValue进行测试,若testValue等于if1则返回then1,若testValue等于if2则返回then2,....若都没有返回,刚返回else.
   --常见用法是在Oracle中实现行转列(Convert Rows to Columns).
   
--4.用Decode 查询同学们的性别信息
SELECT SName, 
       DECODE (sex,
               
'1''',
               
'0'''
              ) 
AS 性别
  
FROM STUDENT;
  
/

--5.按性别分组,统计家庭地址在hunan,sichuan 的同学个数
SELECT age, SUM (DECODE (address, 'hunan'10)) AS "湖南省",
               
SUM (DECODE (address, 'sichuan'10)) AS "四川省"
   
FROM student
   
GROUP BY age;
/

运行结果:

 

原文地址:https://www.cnblogs.com/furenjun/p/oracleDecode.html