程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> [每日一題] OCP1z0-047 :2013-08-29 NULL

[每日一題] OCP1z0-047 :2013-08-29 NULL

編輯:MySQL綜合教程

[每日一題] OCP1z0-047 :2013-08-29 NULL     正確答案:B     用函數可以針對各種數據類型時行操作,包括NULL值在內。其中有一類通用函數,是專門針對NULL值的。     1、針對NULL值的通用函數 (1)NVL(表達式1,表達式2): 轉換空值為一個實際值。如果表達式1值為空,NVL將返回表達式2的值作為結果。如果表達式1     不為空,以表達式1的值作為結果。  這個函數在有些時候非常有用,在很多應用程序中,都要把空當作0處理,這利用NVL是容易實現的:

[html] 
gyj@OCM> select name,salary,nvl(salary,0) from t1;  
NAME           SALARY NVL(SALARY,0)  
---------- ---------- -------------  
gyj2             8000          8000  
gyj3            10000         10000  
gyj4            15000         15000  
gyj8                     0  

 

  2)NVL2 (表達式1,表達式2,表達式3) 此函數比NVL更復雜些。它首先判斷表達式1的值,如果表達式1非空,函數返回表達式2的值作為結果。如果表達式1 為空, 返回     表達式3的值為結果。表達式1 可以是任意數據類型、運算式子。 仍以上面的例子為准,將SAL列中為空的轉換成0,不為空的不變:
[html] 
gyj@OCM> select name,salary,nvl2(salary,salary,0) from t1;  
NAME           SALARY NVL2(SALARY,SALARY,0)  
---------- ---------- ---------------------  
gyj2             8000                  8000  
gyj3            10000                 10000  
gyj4            15000                 15000  
gyj8                                      0  

 

  (3)NULLIF(表達式1,表達式2) 比較兩個表達式,如果相等返回空;如果不相等,返回第一個表達式。 用它可以實現和上面例子中相反的效果。有些應用程序,要求把為0的值顯示為空:
[html] 
gyj@OCM> update t1 set salary=0 where id=5;  
1 row updated.  
gyj@OCM> commit;  
Commit complete.  
gyj@OCM> select id,name,nullif(salary,0) from t1;  
        ID NAME       NULLIF(SALARY,0)  
---------- ---------- ----------------  
         2 gyj2                   8000  
         3 gyj3                  10000  
         4 gyj4                  15000  
         5 gyj5  
         7 gyj7                  12000  

 

  nullif(sal,0),就是將SAL為0的轉變為空。NVL和NVL2是將為空的轉變成其他不是空的值。     (4)COALESCE(表達式1,表達式2,表達式3,…………,表達式n) 返回表達式列表中的第一個值為非空的表達式的值。 它可以實現和NVL一樣的功能,而且它的功能比NVL強。如果用它來實現將NULL轉為0的操作,方法如下:
[html] 
gyj@OCM> select id,name,COALESCE(salary,0) from t1;  
   ID NAME       COALESCE(SALARY,0)  
---------- ---------- ------------------  
         2 gyj2                     8000  
         3 gyj3                    10000  
         4 gyj4                    15000  
         5 gyj5                        0  
         7 gyj7                    12000  

 


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved