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中的幾個單行函數,要記下來所有的函數都要求會使用;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章