Oracle 中 nvl、nvl2、nullif、coalesce、decode 函数的用法详解
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 函数的用法详解的更多相关文章
- oracle通用函数,nvl,nvl2,NULLIF ,coalesce
Oracle 通用函数 ① NVL 函数--------将空值转换成一个已知的值: 可以使用的数据类型有日期.字符.数字. 函数的一般形式: NVL(commission_pct,0) ...
- Oracle DECODE函数的用法详解
Oracle DECODE函数使用方法: 1.比较大小select decode(sign(变量1-变量2),-1,变量1,变量2) from dual; --取较小值sign()函数根据某个值是0. ...
- oracle中的exists和not exists和in用法详解
in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询. not exists:做NL,对子查询先查,有个虚表,有确定值,所以就算子查询有NULL ...
- oracle几个函数整理 DECODE() NVL NVL2 NULLIF Coalesce(转)
DECODE() decode()函数简介: 主要作用:将查询结果翻译成其他值(即以其他形式表现出来,以下举例说明): 使用方法: Select decode(columnname,值1,翻译值1,值 ...
- oracle NVL,NVL2,NULLIF,COALESCE
Oracle中函数以前介绍的字符串处理,日期函数,数学函数,以及转换函数等等,还有一类函数是通用函数.主要有:NVL,NVL2,NULLIF,COALESCE,这几个函数用在各个类型上都可以. 下面简 ...
- MySQL中 IFNULL、NULLIF和ISNULL函数的用法
mysql 中 ifnull().nullif().isnull()函数的用法讲解: 一.IFNULL(expr1,expr2)用法: 假如expr1不为NULL,则 IFNULL() 的返回值为ex ...
- PHP截取字符串函数substr()函数实例用法详解
在PHP中有一项非常重要的技术,就是截取指定字符串中指定长度的字符.PHP对于字符串截取可以使用PHP预定义函数substr()函数来实现.下面就来介绍一下substr()函数的语法及其应用. sub ...
- 浅析ORACLE中NVL/NVL2/DECODE/CASE WHEN的用法
使用NVL的时候只能对值进行是否为空的判断,基本语法是NVL( 值1, ,结果2).它的功能是如果值1为空,则此函数返回结果2,不为空的话直接输出值1(如果两个参数都为空,那么还是返回空): NVL2 ...
- NVL函数(NVL,NVL2,NULLIF,COALESCE)
NVL 语法:NVL( expr1, expr2) 功能:如果expr1为NULL,则NVL函数返回expr2的值,否则返回expr1的值,如果两个参数的都为NULL ,则返回NULL. 注意事项:e ...
随机推荐
- storm+Calcite
敬请期待... http://blog.csdn.net/yu616568/article/details/49915577 https://github.com/terry-chelsea/bigd ...
- UIScrollView嵌套的完美解决方案
UIScrollView嵌套的完美解决方案 做iOS开发,不可避免的会遇到UIScrollView的嵌套问题,之前也曾遇到过,吭哧吭哧做完了,效果不理想,和产品大战好几回合,就那样了.不可避免的,又一 ...
- java实现数据缓存
摘抄自java并发实战 有时候需要对数据缓存.用Map缓存数据比较合适.但是由于对吞吐量,一致性,计算性能的要求,对数据进行缓存的设计还是需要慎重考虑的. 一.利用HashMap加同步 (1)说明 把 ...
- mvc EF框架中,加载外键对象序列化对象时报错 序列化类型为XX的对象时检测到循环引用
Newtonsoft.Json.dll 或者通过->工具->库程序包管理工具->NuGet管理包->联机 输入Newtonsoft或者json.net Newtonsoft.J ...
- Ajax——从服务器获取各种文件
ajax.js内容 function ajax(url,fnWin,fnFaild){ //1.创建ajax对象 var xhr = window.XMLHttpRequest ? new XMLHt ...
- linux 日志管理
- Spring重温(三)--Spring依赖注入(DI)
前言:在Spring框架中,DI(依赖注入)是用来定义对象彼此间的依赖,主要有set方法注入和构造器注入两种方式.另外,当一个类包含多个构造函数带的参数相同,它总是会造成构造函数注入参数类型歧义的问题 ...
- gulp3 和 gulp4 区别
运行gulp项目报错:AssertionError: Task function must be specified 今天像往常一样,编写文章,并使用gulp bulid压缩代码,但是一运行:gulp ...
- C#解析"a=1&b=2&c=3"字符串,微信支付返回字符串,替换<br>为&
原文来自: http://www.mzwu.com/article.asp?id=2802 C#可用: 若该字符串是使用Http Get发送,url?a=1&b=2&c=3,使用下边代 ...
- APACHE - CXF 入门详解
ref: https://www.cnblogs.com/hoojjack/p/6724659.html