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 ( 2 DEFAULT   ' 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 ' 1 0 ))  AS  "湖南省",
               
SUM  (DECODE (address,  ' sichuan ' 1 0 ))  AS  "四川省"
   
FROM  student
   
GROUP   BY  age;
/

 

 

运行结果:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值