NVL(EXPR1,EXPR2)
NVL2(EXPR1,EXPR2,EXPR3)
NULLIF(EXPR1,EXPR2)
COALESCE(EXPR1,,..,EXPRn)
decode --------NVL
nvl(COMMISSION_PCT,0)
--如果第一个参数为null,则返回第二个参数
--如果第一个参数为非null,则返回第一个参数 ---经典示例:计算年薪(工资+提成)
SELECT LAST_NAME,SALARY,NVL(COMMISSION_PCT,0),        (SALARY*12)+(SALARY*12*NVL(COMMISSION_PCT,0)) ANNUAL_SALARY   FROM EMPLOYEES   WHERE LAST_NAME='Matos';    --------NVL2
NVL2(COMMISSION_PCT,'SAL_COMM','SAL')
--如果第一个参数为null,则返回第三个参数
--如果第一个参数为非null,则返回第二个参数
--经典示例:
SELECT LAST_NAME,SALARY,COMMISSION_PCT,
NVL2(COMMISSION_PCT,'SAL+COMM','SAL') INCOME
FROM EMPLOYEES
WHERE DEPARTMENT_ID IN (50,80); ---------NULLIF
nullif(length(first_name),length(last_name))
---如果两个参数值相等,则返回 null
---如果两个参数不等,则返回第一个表达式值 SELECT FIRST_NAME ,LENGTH(FIRST_NAME) "EXPR1",        LAST_NAME, LENGTH(LAST_NAME) "expr2",   nullif(length(first_name),length(last_name)) result
FROM EMPLOYEES; ---------COALESCE
COALESCE(EXPR1,EXPR2,EXPR3...EXPRn)
--从左往右数,遇到第一个非null值,则返回该非null值。
--多层判断 SELECT LAST_NAME,EMPLOYEE_ID,        COALESCE(TO_CHAR(commission_pct),TO_CHAR(manager_id),   'No commission and no manager')
FROM EMPLOYEES; ---------------------------------
-----------条件表达式
IF-THEN-ELSE --CASE 语句(SQL标准,编写繁杂)
--DECODE 函数
DECODE(COL|EXPRESSION,SERACH1,RESULT1                       [,search2,result2,...,]  [,default])
--如果 search1 = expression 则返回 result1 
--如果 search2 = expression 则返回 result2
---------CASE
--示例:
SELECT LAST_NAME,JOB_ID,SALARY,        CASE JOB_ID WHEN 'IT_PROG' THEN 1.10*SALARY               WHEN 'ST_CLERK' THEN 1.15*SALARY   WHEN 'SA_REP' THEN 1.20*SALARY   ELSE SALARY END "REVISED SALARY"
FROM EMPLOYEES; ---------DECODE
--示例:
----DECODE函数的作用:它可以将输入数值与函数中的参数列表相比较,根据输入值返回一个对应值。函数的参数列表是由若干数值及其对应结果值组成的若干序偶形式。当然,如果未能与任何一个实参序偶匹配成功,则函数也有默认的返回值。 ---  区别于SQL的其它函数,DECODE函数还能识别和操作空值。  --- 语法如下:   DECODE(control_value,value1,result1[,value2,result2…][,default_result]);  control _value  -- 试图处理的数值。DECODE函数将该数值与后面的一系列的偶序相比较,以决定返回值。   value1  -----是一组成序偶的数值。如果输入数值与之匹配成功,则相应的结果将被返回。对应一个空的返回值,可以使用关键字NULL于之对应   result1  ---- 是一组成序偶的结果值。   ---default_result 未能与任何一个值匹配时,函数返回的默认值。   ---示例如下:   select decode( x , 1 , ‘x is 1 ’, 2 , ‘x is 2 ’, ‘others’) from dual  ---------------------

Oracle 中 nvl、nvl2、nullif、coalesce、decode 函数的用法详解的更多相关文章

  1. oracle通用函数,nvl,nvl2,NULLIF ,coalesce

    Oracle 通用函数 ① NVL 函数--------将空值转换成一个已知的值: 可以使用的数据类型有日期.字符.数字. 函数的一般形式:   NVL(commission_pct,0)       ...

  2. Oracle DECODE函数的用法详解

    Oracle DECODE函数使用方法: 1.比较大小select decode(sign(变量1-变量2),-1,变量1,变量2) from dual; --取较小值sign()函数根据某个值是0. ...

  3. oracle中的exists和not exists和in用法详解

    in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询. not exists:做NL,对子查询先查,有个虚表,有确定值,所以就算子查询有NULL ...

  4. oracle几个函数整理 DECODE() NVL NVL2 NULLIF Coalesce(转)

    DECODE() decode()函数简介: 主要作用:将查询结果翻译成其他值(即以其他形式表现出来,以下举例说明): 使用方法: Select decode(columnname,值1,翻译值1,值 ...

  5. oracle NVL,NVL2,NULLIF,COALESCE

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

  6. MySQL中 IFNULL、NULLIF和ISNULL函数的用法

    mysql 中 ifnull().nullif().isnull()函数的用法讲解: 一.IFNULL(expr1,expr2)用法: 假如expr1不为NULL,则 IFNULL() 的返回值为ex ...

  7. PHP截取字符串函数substr()函数实例用法详解

    在PHP中有一项非常重要的技术,就是截取指定字符串中指定长度的字符.PHP对于字符串截取可以使用PHP预定义函数substr()函数来实现.下面就来介绍一下substr()函数的语法及其应用. sub ...

  8. 浅析ORACLE中NVL/NVL2/DECODE/CASE WHEN的用法

    使用NVL的时候只能对值进行是否为空的判断,基本语法是NVL( 值1, ,结果2).它的功能是如果值1为空,则此函数返回结果2,不为空的话直接输出值1(如果两个参数都为空,那么还是返回空): NVL2 ...

  9. NVL函数(NVL,NVL2,NULLIF,COALESCE)

    NVL 语法:NVL( expr1, expr2) 功能:如果expr1为NULL,则NVL函数返回expr2的值,否则返回expr1的值,如果两个参数的都为NULL ,则返回NULL. 注意事项:e ...

随机推荐

  1. 快速学习 javascript

    // js 6种数据类型:字符串.数值.布尔值.undefined.null.object // 三种非数字的数字类型:Infinity -Infinity NaN var str = "H ...

  2. Ubuntu中在服务器和本机之间传递文件

    首先可以通过root进入到服务器中,(登录方法在下面讲解)为自己创建一个用户. useradd的选项: 选项: -b, --base-dir BASE_DIR 新账户的主目录的基目录 -c, --co ...

  3. this与回调函数

    在c++里回调函数分2种: 全局函数:不包函在类的内部 或 类内部的静态函数 类内部函数(或叫 局部函数):需要通过实例化后的对象调用的 因c++是c的一层封装,所以类似c里struct内的函数 在传 ...

  4. java实现excel生成和导出

    1.java生成excel 2.java读取excel内容

  5. git修改历史记录

     1.git stash2.git rebase 45c2d5c --interactive 3.git stash pop4.git add5.git commit --amend      确认编 ...

  6. G - Intersecting Rectangles Kattis - intersectingrectangles (扫描线)(判断多个矩形相交)

    题目链接: G - Intersecting Rectangles Kattis - intersectingrectangles 题目大意:给你n个矩形,每一个矩形给你这个矩形的左下角的坐标和右上角 ...

  7. 7-10 多项式A除以B (25 分)

    题目链接:https://pintia.cn/problem-sets/1108548596745592832/problems/1108548661014913033 题目大意: 这仍然是一道关于A ...

  8. Ajax原生请求和java对象转成json

    \黑马程序员_超全面的JavaWeb视频教程vedio\黑马程序员_超全面的JavaWeb教程-源码笔记\JavaWeb视频教程_day23-资料源码\ajax_code\day23_3 本代码中有模 ...

  9. 列出下面几项的URL并解释每部分代表的含义

    列出下面几项的URL并解释每部分代表的含义 a.你的学校 b.你的学校的计算机科学系 c.你的老师的主页

  10. 求两个排序数组中位数 C++

    题目描述: 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 . 请找出这两个有序数组的中位数.要求算法的时间复杂度为 O(log (m+n)) . 你可以假设 nums1 和 nu ...