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脚本

Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->drop table student;
/
--1.创建表
CREATE TABLE  STUDENT
(
   SID VARCHAR(10),
   SName varchar(30),
   sex varchar2(2) DEFAULT '1',
   age integer,
   address varchar(100),
   primary key (SID)
);
/
--2.新增数据
Declare
i 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', 1, 0)) AS "湖南省",
               SUM (DECODE (address, 'sichuan', 1, 0)) AS "四川省"
   FROM student
   GROUP BY age;
/
运行结果:


转载自: http://www.cnblogs.com/furenjun/archive/2010/08/05/oracleDecode.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值