decode類似于if - then - else
語法:decode(values,if1,then1,if2,then2,...else)
values 代表某個表的任何類型的任意列或者一個通過計算所得的任何結果,當每個value值被測試,如果value的值為if1,decode函數的結果為then1,如果都不符合,那么就返回else。
這里的if、then及else都可以是函數或計算表達式。
create table student(id number,name varchar2(4),sex number);
insert into student values(1,'A',1);
insert into student values(2,'B',2);
insert into student values(3,'C',1);
SQL> select * from student;
ID NAME SEX
---------- ------------ ----------
1 A 1
2 B 2
3 C 1
SQL>
問題:sex列,1顯示為nan,2顯示為nv
SQL> select id,name,decode(sex,1,'nan','nv') from student;
ID NAME DECODE(SE
---------- ------------ ---------
1 A nan
2 B nv
3 C nan
SQL>
sex -- values
1 -- if1
nan -- then1
nv -- else
創建表:
create table sales(month number(3),sales_tv number(4),sales_computer number(4));
insert into sales values(01,10,18);
insert into sales values(02,28,20);
insert into sales values(03,36,33);
month:月份 sales_tv:電視機的銷售量 sales_computer:計算機的銷售量
問題:
選出每個月月份最多銷售量,使用函數sign.
sign函數可以判斷參數是正或負,正返回1,負返回-1,0返回0
SQL> select month,decode(sign(SALES_TV - SALES_COMPUTER),1,SALES_TV,0,SALES_TV,-1,SALES_COMPUTER) as max from sales;
MONTH MAX
---------- ----------
1 18
2 28
3 36
SQL>
原創:www.arppinging.com
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。