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

页面导航:首页 > 数据库 > Mysql > [每日一题] OCP1z0-047 :2013-08-29 NULL

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

来源: 作者: 时间:2016-02-17 10:07 【

[每日一题] OCP1z0-047 :2013-08-29 NULL正确答案:B用函数可以针对各种数据类型时行操作,包括NULL值在内。其中有一类通用函数,是专门针对NULL值的。1、针对NULL值的通用函数(1)NVL(表达式
[每日一题] OCP1z0-047 :2013-08-29 NULL
 
 
正确答案:B
 
 
用函数可以针对各种数据类型时行操作,包括NULL值在内。其中有一类通用函数,是专门针对NULL值的。
 
 
1、针对NULL值的通用函数
(1)NVL(表达式1,表达式2): 转换空值为一个实际值。如果表达式1值为空,NVL将返回表达式2的值作为结果。如果表达式1
 
 
不为空,以表达式1的值作为结果。
 这个函数在有些时候非常有用,在很多应用程序中,都要把空当作0处理,这利用NVL是容易实现的:
[] 
[email protected]> 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] 
[email protected]> 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] 
[email protected]> update t1 set salary=0 where id=5;  
1 row updated.  
[email protected]> commit;  
Commit complete.  
[email protected]> 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] 
[email protected]> 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  

 


Tags:

相关文章

    文章评论

    最 近 更 新
    热 点 排 行
    Js与CSS工具
    代码转换工具
    
    <