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



    转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/10558305


    正确答案:B


    用函数可以针对各种数据类型时行操作,包括NULL值在内。其中有一类通用函数,是专门针对NULL值的。


    1、针对NULL值的通用函数
    (1)NVL(表达式1,表达式2): 转换空值为一个实际值。如果表达式1值为空,NVL将返回表达式2的值作为结果。如果表达式1


    不为空,以表达式1的值作为结果。
     这个函数在有些时候非常有用,在很多应用程序中,都要把空当作0处理,这利用NVL是容易实现的:

    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,不为空的不变:

    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的值显示为空:

    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的操作,方法如下:

    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

    QQ:252803295

    学习交流QQ群:
    DSI&Core Search  Ⅰ 群:127149411(技术:已满)
    DSI&Core Search  Ⅱ 群:177089463(技术:未满)
    DSI&Core Search  Ⅲ 群:284596437(技术:未满)
    DSI&Core Search  Ⅳ 群:192136702(技术:未满)
    DSI&Core Search  Ⅴ 群:285030382(闲聊:未满)



    MAIL:oracledba_cn@hotmail.com

    BLOG: http://blog.csdn.net/guoyjoe

    WEIBO:http://weibo.com/guoyJoe0218

    ITPUB: http://www.itpub.net/space-uid-28460966.html

    OCM:   http://education.oracle.com/education/otn/YGuo.HTM

      

  • 相关阅读:
    消除醉酒痛苦的九种食品
    要成功,就马上准备有所付出吧!这就是每天你应该养成的习惯。
    赞美
    人的一生究竟需要多少钱?
    试试看
    ubuntu 环境变量PATH的修改[转]
    Ubuntu netsnmp安装
    ubuntu终止进程的方法
    Linux(ubuntu)下MySQL整个数据库的备份与还原 Linux下MySQL整个数据库的备份与还原[转]
    Ubuntu防火墙 UFW 设置
  • 原文地址:https://www.cnblogs.com/pangblog/p/3291916.html
Copyright © 2020-2023  润新知