SQL單行函數-通用函數
通用函數主要有兩個:NVL(),DECODE(),這兩個函數算是ORACLE自己的特色函數;
1.NVL()函數,處理 NULL
例子:查出每個僱員的全部年薪;
SQL> SELECT first_name,salary,commission_pct,(salary+commission_pct)*12 FROM employees;
FIRST_NAME SALARY COMMISSION_PCT (SALARY+COMMISSION_PCT)*12
-------------------- ---------- -------------- --------------------------
Donald 2600
Douglas 2600
Jennifer 4400
Michael 13000
Pat 6000
Susan 6500
Hermann 10000
Shelley 12000
William 8300
Steven 24000
Neena 17000
FIRST_NAME SALARY COMMISSION_PCT (SALARY+COMMISSION_PCT)*12
-------------------- ---------- -------------- --------------------------
Lex 17000
Alexander 9000
Bruce 6000
David 4800
Valli 4800
Diana 4200
Nancy 12000
Daniel 9000
John 8200
Ismael 7700
Jose Manuel 7800
FIRST_NAME SALARY COMMISSION_PCT (SALARY+COMMISSION_PCT)*12
-------------------- ---------- -------------- --------------------------
Luis 6900
Den 11000
Alexander 3100
Shelli 2900
Sigal 2800
Guy 2600
Karen 2500
Matthew 8000
Adam 8200
Payam 7900
Shanta 6500
FIRST_NAME SALARY COMMISSION_PCT (SALARY+COMMISSION_PCT)*12
-------------------- ---------- -------------- --------------------------
Kevin 5800
Julia 3200
Irene 2700
James 2400
Steven 2200
Laura 3300
Mozhe 2800
James 2500
TJ 2100
Jason 3300
Michael 2900
FIRST_NAME SALARY COMMISSION_PCT (SALARY+COMMISSION_PCT)*12
-------------------- ---------- -------------- --------------------------
Ki 2400
Hazel 2200
Renske 3600
Stephen 3200
John 2700
Joshua 2500
Trenna 3500
Curtis 3100
Randall 2600
Peter 2500
John 14000 .4 168004.8
FIRST_NAME SALARY COMMISSION_PCT (SALARY+COMMISSION_PCT)*12
-------------------- ---------- -------------- --------------------------
Karen 13500 .3 162003.6
Alberto 12000 .3 144003.6
Gerald 11000 .3 132003.6
Eleni 10500 .2 126002.4
Peter 10000 .3 120003.6
David 9500 .25 114003
Peter 9000 .25 108003
Christopher 8000 .2 96002.4
Nanette 7500 .2 90002.4
Oliver 7000 .15 84001.8
Janette 10000 .35 120004.2
這時有僱員的年薪變成了NULL,而造成這種問題的關鍵是在commission_pct字段上位NULL,那我們解決這個問題就必須做一種處理:將NULL變成“0”
SQL> SELECT first_name,salary,commission_pct,(salary+NVL(commission_pct,0))*12 FROM employees;
FIRST_NAME SALARY COMMISSION_PCT (SALARY+NVL(COMMISSION_PCT,0))*12
-------------------- ---------- -------------- ---------------------------------
Donald 2600 31200
Douglas 2600 31200
Jennifer 4400 52800
Michael 13000 156000
Pat 6000 72000
Susan 6500 78000
Hermann 10000 120000
Shelley 12000 144000
William 8300 99600
Steven 24000 288000
Neena 17000 204000
注意:NVL就是將NULL變爲0.
2.DECODE()函數:多數值判斷
DECODE()函數非常類似於程序中的if。。。else語句,不同的是DECODE()函數判斷是數值,而不是邏輯條件。
例子:將僱員的職位替換成中文顯示:
SH_CLERK:辦事員
這種判斷肯定是逐行判斷,所以這時就必須用到DECODE()函數,而此時函數語法如下:
DECODE(數值 |列,判斷值1,顯示值1,判斷值2,顯示值2,判斷值3,顯示值3,...)
例子;實現顯示操作功能
SQL> SELECT first_name,job_id,DECODE(job_id,'SH_CLERK','辦事員') FROM employees;
FIRST_NAME JOB_ID DECODE
-------------------- ---------- ------
Donald SH_CLERK 辦事員
Douglas SH_CLERK 辦事員
注意:DECODE()函數是我們ORACLE中最有特點的函數,一定要掌握。
4.總結
SQL的基本語法是SELECT 、FROM、WHERE、ORADER BY 的關係;
HR用戶的所有數據表的信息,包括列的名稱,即作用和類型;
ORACLE中的幾個單行函數,要記下來所有的函數都要求會使用;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.