zoukankan      html  css  js  c++  java
  • oracle几个函数整理 DECODE() NVL NVL2 NULLIF Coalesce(转)

    DECODE()

    decode()函数简介:

    主要作用:将查询结果翻译成其他值(即以其他形式表现出来,以下举例说明);

    使用方法:

    Select decode(columnname,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)

    From talbename

    Where …

    其中columnname为要选择的table中所定义的column,

    ·含义解释:

    decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)的理解如下:

    if (条件==值1)

     then    

    return(翻译值1)

    elsif (条件==值2)

    then    

    return(翻译值2)    

    ......

    elsif (条件==值n)

     then    

    return(翻译值n)

    else    

    return(缺省值)

    end if

    注:其中缺省值可以是你要选择的column name 本身,也可以是你想定义的其他值,比如Other等;

    Oracle中函数以前介绍的字符串处理,日期函数,数学函数,以及转换函数等等,还有一类函数是通用函数。主要有:NVL,NVL2,NULLIF,COALESCE,这几个函数用在各个类型上都可以。

    下面简单介绍一下几个函数的用法。

    在介绍这个之前你必须明白什么是oracle中的空值null

    1.NVL函数

    NVL函数的格式如下:NVL(expr1,expr2)

    含义是:如果oracle第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第一个参数本来的值。

    例如:

    SQL> select ename,NVL(comm, -1) from emp;

    ENAME NVL(COMM,-1)

    ------- ----

    SMITH -1

    ALLEN 300

    WARD 500

    JONES -1

    MARTIN 1400

    BLAKE -1

    FORD -1

    MILLER -1

    其中显示-1的本来的值全部都是空值的

    2 NVL2函数

    NVL2函数的格式如下:NVL2(expr1,expr2, expr3)

    含义是:如果该函数的第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第三个参数的值。SQL> select ename,NVL2(comm,-1,1) from emp;

    ENAME NVL2(COMM,-1,1)

    ------- -----

    SMITH 1

    ALLEN -1

    WARD -1

    JONES 1

    MARTIN -1

    BLAKE 1

    CLARK 1

    SCOTT 1

    上面的例子中。凡是结果是1的原来都不为空,而结果是-1的原来的值就是空。

    3. NULLIF函数

    NULLIF(exp1,expr2)函数的作用是如果exp1和exp2相等则返回空(NULL),否则返回第一个值。
    下面是一个例子。使用的是oracle中HR schema,如果HR处于锁定,请启用

    这里的作用是显示出那些换过工作的人员原工作,现工作。

    SQL> SELECT e.last_name, e.job_id,j.job_id,NULLIF(e.job_id, j.job_id) “Old Job ID”

    FROM employees e, job_history j

    WHERE e.employee_id = j.employee_id

    ORDER BY last_name;

    LAST_NAME JOB_ID JOB_ID Old Job ID

    ----------------- ------- ------- -------

    De Haan AD_VP IT_PROG AD_VP

    Hartstein MK_MAN MK_REP MK_MAN

    Kaufling ST_MAN ST_CLERK ST_MAN

    Kochhar AD_VP AC_MGR AD_VP

    Kochhar AD_VP AC_ACCOUNT AD_VP

    Raphaely PU_MAN ST_CLERK PU_MAN

    Taylor SA_REP SA_MAN SA_REP

    Taylor SA_REP SA_REP

    Whalen AD_ASST AC_ACCOUNT AD_ASST

    Whalen AD_ASST AD_ASST

    可以看到凡是employee。job_id和job_histroy.job_id相等的,都会在结果中输出NULL即为空,否则显示的是employee。job_id

    4.Coalesce函数

    Coalese函数的作用是的NVL的函数有点相似,其优势是有更多的选项。

    格式如下:

    Coalesce(expr1, expr2, expr3….. exprn)

    表示可以指定多个表达式的占位符。所有表达式必须是相同类型,或者可以隐性转换为相同的类型。
    返回表达式中第一个非空表达式,如有以下语句:   SELECT COALESCE(NULL,NULL,3,4,5) FROM dual   其返回结果为:3
    如果所有自变量均为 NULL,则 COALESCE 返回 NULL 值。   COALESCE(expression1,...n) 与此 CASE 函数等价:
    这个函数实际上是NVL的循环使用,在此就不举例子了。

  • 相关阅读:
    sp2010 升级sp2013 用户无法打开网站
    powerviot install in sharepoint 2013
    can not connect cube in performancce dashboard
    westrac server security configure user info
    添加报表服务在多服务器场
    sharepoint 2013 office web app 2013 文档在线浏览 IE11 浏览器不兼容解决方法
    delete job definition
    目前付款申请单内网打开慢的问题
    item style edit in sharepoint 2013
    Could not load file or assembly '$SharePoint.Project.AssemblyFullName$'
  • 原文地址:https://www.cnblogs.com/oraclesea/p/4480517.html
Copyright © 2011-2022 走看看