nvl2(v1, v2, v3) 定义:如果v1为空,返回v3; 不为空,返回v2

nvl2要求v2,v3的类型一致,不一致会发生类型转换。问题:最终返回值类型是v2的类型还是v3的类型?

看题目:nvl2(null,sysdate-(sysdate-1/24/60), sysdate) 最终返回的是什么类型?

如果做一下实验,可能看得更明白一些:

select nvl2(1, sysdate-(sysdate-1/24/60), sysdate) from dual;
select nvl2(null,sysdate-(sysdate-1/24/60), sysdate) from dual; select nvl2(1, sysdate, sysdate-(sysdate-1/24/60) from dual;
select nvl2(null, sysdate, sysdate-(sysdate-1/24/60) from dual; select sysdate-1/24/60 from dual;

上面两条语句正确执行,中间两条语句报错:ORA-00932:数据类型不一致:应为DATE,但却获得DATE JULIAN

下面是nvl2执行路径:



结论:最终类型将会是v2类型

例子中带了一个知识点,date可以隐式转换成number类型,反之则不行。

date如果要手工转成number则比较复杂,可以用to_char(sysdate, 'fm....')转成字符,再to_number('2013-01-01', '9999G99G99', 'nls_numeric_characters=,-')

oracle nvl2函数的更多相关文章

  1. Oracle nvl(),nvl2()函数介绍

    NVL函数 Oracle/PLSQL中的一个函数. 格式为: NVL( string1, replace_with) 功能:如果string1为NULL,则NVL函数返回replace_with的值, ...

  2. oracle中的nvl(), nvl2()函数

    nvl()函数是oracle/plpgsql中的一个函数,格式为:nvl(string1, replace_with) 功能:如果string1 位null,那么nvl()函数返回replace_wi ...

  3. Oracle的nvl函数和nvl2函数

    一.基本语法 介绍一下oracle的nvl函数和nvl2函数. nvl函数 nvl函数基本语法为nvl(E1,E2),意思是E1为null就返回E2,不为null就返回E1. nvl2函数 nvl2函 ...

  4. ORACLE NVL 和 NVL2 函数的使用

    NVL函数是一个空值转换函数,在SQL查询中主要用来处理null值.在不支持 null 值或 null 值无关紧要的情况下,可以使用 NVL( ) 来移去计算或操作中的 null 值. Oracle在 ...

  5. Oracle NVL 函数 nvl nvl2

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

  6. Oracle NVL与NVL2函数

    nvl( ) 函数 从两个表达式返回一个非 null 值. 语法 NVL(eExpression1, eExpression2) 参数 eExpression1, eExpression2 如果 eE ...

  7. Oracle SQL函数

    Oracle将函数大致分为单行函数,聚合函数和分析函数. 单行函数分为字符函数,日期函数,转换函数,数字函数,通用函数,decode函数 一.字符函数 1)大小写控制函数 01.Lower() 全部小 ...

  8. Oracle 转换函数

    Oracle 转换函数 -- TO_CHAR(date|number {,fmt} {,nlsparams}) fmt:格式内容,返回的字符串是什么格式的,在此处指定:nlsparams:指定国家语言 ...

  9. oracle常用函数介绍

    Oracle函数 Oracle SQL提供了用于执行特定操作的专用函数,这些函数大大增强了SQL语言的功能.函数可以接受零个或者多个输入参数,并返回一个输出结果.Oracle数据库中主要使用两种类型的 ...

随机推荐

  1. JS判断客户端是否是iOS或者Android手机移动端(转载)

    前言: 上午有一个移动端的项目负责人问我,在ios系统上样式出现问题,因为内核原因,我改来改去,在ios弄好了,但在安卓有问题了,突然想到了一种办法,既然ios是一种机型,安卓是一种机型,可以检测用户 ...

  2. HashMapd的存取原理你知道多少

    在java的容器集合中,hashmap的使用频率可以说是相当高的.不过对于hashmap的存(put())以及取(get())的原理可能很多人还不大清楚,今天,我就给大家介绍下它是如何存如何取的. # ...

  3. ELK-安装kibana

    注意:在下载tar包的时候需要注意下安装的es版本号,按照官网的说明版本是对应一致的. #下载tar包$ wget https://artifacts.elastic.co/downloads/kib ...

  4. 微服务实战(二):使用API Gateway

    微服务实战(一):微服务架构的优势与不足 微服务实战(二):使用API Gateway 微服务实战(三):深入微服务架构的进程间通信 微服务实战(四):服务发现的可行方案以及实践案例 微服务实践(五) ...

  5. 一篇文章彻底搞懂es6 Promise

    前言 Promise,用于解决回调地狱带来的问题,将异步操作以同步的操作编程表达出来,避免了层层嵌套的回调函数. 既然是用来解决回调地狱的问题,那首先来看下什么是回调地狱 var sayhello = ...

  6. Kafka基础入门

    1. Kafka简介 Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写.Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作 ...

  7. web缓存策略之HTTP缓存大全

    一. web缓存总分类 数据库数据缓存 Web应用,特别是SNS类型的应用,往往关系比较复杂,数据库表繁多,如果频繁进行数据库查询,很容易导致数据库不堪重荷.为了提供查询的性能,会将查询后的数据放到内 ...

  8. JaveWeb学习之Servlet(一):Servlet生命周期和加载机制

    原文同步发表至个人博客[夜月归途] 原文链接:http://www.guitu18.com/se/java/2018-07-22/19.html 作者:夜月归途 出处:http://www.guitu ...

  9. cobbler批量安装系统使用详解-技术流ken

    前言 cobbler是一个可以实现批量安装系统的Linux应用程序.它有别于pxe+kickstart,cobbler可以实现同个服务器批量安装不同操作系统版本. 系统环境准备及其下载cobbler ...

  10. 你需要一点点CIL

    1.当我们程序集中有大量反射的时候,性能往往会下降很快.我们目的很明确 如何解决反射造成的这些影响,其中之一个正确且高逼格的做法是 使用 CIL指令去实现.如何实现需要我们拥有若干基础知识.知道 CI ...