oracle 菜鳥學習之 decode中if-then-else邏輯
阿新 • • 發佈:2018-11-27
oracle 菜鳥學習之 decode中if-then-else邏輯
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