/*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
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;
/
運行結果: