广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >Oracle中nvl()和nvl2()函数实例详解
  • 795
分享到

Oracle中nvl()和nvl2()函数实例详解

2024-04-02 19:04:59 795人浏览 八月长安
摘要

目录1.nvl:根据参数1是否为null返回参数1或参数2的值【样例展示一】:expression1值为null:【样例展示二】:expression1值不为null:【样例展示三】

oracle中nvl()与nvl2()函数详解:

  • 函数nvl(expression1,expression2)根据参数1是否为null返回参数1或参数2的值;
  • 函数nvl2(expression1,expression2,expression3)根据参数1是否为null返回参数2或参数3的值。

1.nvl:根据参数1是否为null返回参数1或参数2的值

【函数格式】:nvl(expression1,expression2)

【函数说明】:

  • 若expression1值为null,则该函数返回expression2;
  • 若expression1值不为null,则该函数返回expression1;
  • 若expression1、expression2的值均为null,则该函数返回null。

【特别说明】:参数expression1和expression2可以是字符型、数字型或日期型,但参数expression1与expression2的类型必须一致。

【样例展示一】:expression1值为null:

expression2为字符型:

select nvl(null,'ABCD') from dual;        --返回:ABCD
select nvl(null,'abcd') from dual;        --返回:abcd
select nvl(null,'12345') from dual;        --返回:12345

expression2为数值型:

select nvl(null,12345) from dual;        --返回:12345
select nvl(null,00000) from dual;        --返回:0
select nvl(null,-12345) from dual;        --返回:-12345
select nvl(null,123.45) from dual;        --返回:123.45
select nvl(null,-123.45) from dual;        --返回:-123.45

expression2为日期时间型:

select nvl(null,sysdate) from dual;        --返回:2022/2/25 11:54:18
select nvl(null,to_date('2022/2/25 11:54:18','yyyy-mm-dd hh24:mi:ss')) from dual;                        --返回:2022/2/25 11:54:18
select nvl(null,to_date('2022/2/25','yyyy-mm-dd')) from dual;        --返回:2022/2/25
select nvl(null,to_date('2022','yyyy')) from dual;        --返回:2022/2/1

【样例展示二】:expression1值不为null:

expression1为字符型:

select nvl('ABCD','abcd') from dual;        --返回:ABCD
select nvl('abcd','ABCD') from dual;           --返回:abcd
select nvl('12345','54321') from dual;        --返回:12345

expression1为数值型:

select nvl(12345,null) from dual;        --返回:12345
select nvl(00000,11111) from dual;        --返回:0
select nvl(-12345,null) from dual;        --返回:-12345
select nvl(123.45,-123.45) from dual;        --返回:123.45
select nvl(-123.45,123.45) from dual;        --返回:-123.45

expression1为日期时间型:

select nvl(sysdate,null) from dual;        --返回:2022/2/25 12:18:23
select nvl(to_date('2022/2/25 12:18:23','yyyy-mm-dd hh24:mi:ss'),null) from dual;                        --返回:2022/2/25 12:18:23
select nvl(to_date('2022/2/25','yyyy-mm-dd'),null) from dual;        --返回:2022/2/25
select nvl(to_date('2022','yyyy'),null) from dual;        --返回:2022/2/1

【样例展示三】:expression1、expression2值均为null:

select nvl(null,null) from dual;        --返回空值
select nvl('',null) from dual;        --返回空值
select nvl(null,'') from dual;        --返回空值
select nvl('','') from dual;        --返回空值

2.nvl2:根据参数1是否为null返回参数2或参数3的值

【函数格式】:nvl2(expression1,expression2,expression3)

【函数说明】:

  • 若expression1值不为null,则该函数返回expression2值;
  • 若expression1值为null,则该函数返回expression3值;
  • 若expression1、expression2、expression3值均为null,则该函数返回null。

【特别说明】:

  • expression1的类型不需要与expression2和expression3的类型保持一致;
  • expression2与expression3的类型尽量保持一致,若不一致,当expression1为null时,则expression3会自动转换为expression2的类型,若两个数据类型之间无法转换,则会报错。

【样例展示一】:expression1值不为null:

expression2和expression3均为字符型:

select nvl2(0,'ABCD','abcd') from dual;        --返回:ABCD
select nvl2('a','ABCD','1234') from dual;        --返回:ABCD
select nvl2(sysdate,'1234','abcd') from dual;        --返回:1234

expression2和expression3均为数值型:

select nvl2(0,12345,54321) from dual;        --返回:12345
select nvl2('a',123.45,543.21) from dual;        --返回:123.45
select nvl2(sysdate,-12345,-54321) from dual;        --返回:-12345

expression2和expression3数据类型不一致:

        注意:此时expression1有值,因此该函数直接返回expression2的值,即使expression3的类型无法转换为expression2的类型也不会报错。

select nvl2(0,'ABCD',54321) from dual;        --返回:ABCD
select nvl2('a','abcd',543.21) from dual;        --返回:abcd
select nvl2(sysdate,'12345',-54321) from dual;        --返回:12345

【样例展示二】:expression1值为null:

expression2和expression3均为字符型:

select nvl2(null,'ABCD','abcd') from dual;        --返回:abcd
select nvl2('','ABCD','1234') from dual;        --返回:1234

expression2和expression3均为数值型:

select nvl2(null,12345,54321) from dual;        --返回:54321
select nvl2('',123.45,543.21) from dual;        --返回:543.21

expression2和expression3数据类型不一致:

        注意:此时expression1值为null,因此该函数会返回expression3的值,若expression3的类型无法转换为expression2的类型,则会报错。

select nvl2(null,'ABCD',54321) from dual;        --返回:54321
select nvl2('','abcd',543.21) from dual;        --返回:543.21
select nvl2('',543.21,'abcd') from dual;        --执行报错
select nvl2(null,'abcd',sysdate) from dual;        --返回:25-2月 -22
select nvl2(null,sysdate,'abcd') from dual;        --执行报错

【样例展示三】:expression1为null,且expression2或expression3值为null:

select nvl2(null,null,'123') from dual;        --返回:123
select nvl2(null,'abc',null) from dual;        --返回:空值
select nvl2(null,null,null) from dual;        --返回:空值
select nvl2('','','') from dual;        --返回:空值

总结

到此这篇关于Oracle中nvl()和nvl2()函数详解的文章就介绍到这了,更多相关Oracle nvl()和nvl2()函数内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Oracle中nvl()和nvl2()函数实例详解

本文链接: https://www.lsjlt.com/news/149041.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Oracle中nvl()和nvl2()函数实例详解
    目录1.nvl:根据参数1是否为null返回参数1或参数2的值【样例展示一】:expression1值为null:【样例展示二】:expression1值不为null:【样例展示三】...
    99+
    2022-11-13
  • Oracle nvl、nvl2、nullif、decode、case函数详解
    1、NVL函数    nvl(expr1,expr2),如果expr1为空,则返回expr2;2、NVL2函数    nvl2...
    99+
    2022-10-18
  • Oracle中的nvl()和nvl2()函数怎么用
    本篇内容介绍了“Oracle中的nvl()和nvl2()函数怎么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Oracle中nvl()与n...
    99+
    2023-06-30
  • Oracle中trunc()函数实例详解
    目录1、功能描述2、语法2.1、数值处理:2.2、日期处理:总结1、功能描述 用于截取时间或者数值,返回指定的值。 2、语法 2.1、数值处理: 格式: trunc(number,[decimals]) number&n...
    99+
    2023-01-13
    oracle中trunc函数 oracle数据库trunc用法 oracle truncat
  • Oracle中pivot函数图文实例详解
    目录【基本介绍】【准备样例数据】【样例展示1】【样例展示2】【样例展示3】【样例展示4】【样例展示5】【样例展示6】总结【基本介绍】 【格式】:pivot(聚合函数 for 需要转为列的字段名 in(需要转为列的字段值)...
    99+
    2023-05-12
    oracle行转列函数pivot oracle pivot oracle pivot函数
  • Oracle数据库中通用的函数实例详解
    目录一、 Scott用户下的表结构1、如果自己没有Scoot表就可以自己创建一个二、单行函数1、字符函数2、数值函数三、多行函数(聚合函数)1、统计记录数2、最小值查询 min()3...
    99+
    2022-11-13
  • Oracle常见分析函数实例详解
    目录1. 认识分析函数1.1 什么是分析函数1.2 分析函数和聚合函数的不同1.3 分析函数的形式2. 理解over()函数2.1 两个order by 的执行机制2.2 分析函数中的分组、排序、窗口2.3 帮助理解ov...
    99+
    2023-04-25
    oracle分析函数用法 oracle的分析函数 oracle分析函数有哪些
  • Oracle merge合并更新函数实例详解
    前言 MERGE语句是Oracle9i新增的语法,用来合并UPDATE和INSERT语句。 通过MERGE语句,根据一张表或多表联合查询的连接条件对另外一张表进行查询,连接条件匹配上的进行UPDATE,无法...
    99+
    2022-10-18
  • 实例详解Python中的numpy.abs和abs函数
    目录说在最前先看示例程序-abs()函数再看示例程序-numpy.abs()函数观察两个程序的结果分析解释拓展补充:numpy abs()报错总结说在最前 不知道小伙伴们在写代码的时...
    99+
    2022-11-11
  • python中np.random.permutation函数实例详解
    目录一:函数介绍二:实例2.1 直接处理数组或列表数2.2 间接处理:不改变原数据(对数组下标的处理)2.3 实例:鸢尾花数据中对鸢尾花的随机打乱(可以直接用)总结一:函数介绍 np...
    99+
    2023-05-14
    python np.random.permutation np.random.permutation函数
  • Oracle中的游标和函数详解
     Oracle中的游标和函数详解 1.游标 游标是一种 PL/SQL 控制结构;可以对 SQL 语句的处理进行显示控制,便于对表的行数据 逐条进行处理。 游标并不是一个数据库对象,只是存留在内...
    99+
    2022-10-18
  • python strip() 函数和 split() 函数的详解及实例
    python strip() 函数和 split() 函数的详解及实例 一直以来都分不清楚strip和split的功能,实际上strip是删除的意思;而split则是分割的意思。因此也表示了这两个功能是完...
    99+
    2022-06-04
    函数 详解 实例
  • Oracle中decode函数详解
    Oracle中的decode函数是一个条件表达式函数,用于根据给定的条件对一个或多个表达式进行比较,并返回与匹配条件相对应的结果表达...
    99+
    2023-09-09
    oracle
  • Oracle Instr函数实例讲解
    instr函数为字符查找函数,其功能是查找一个字符串在另一个字符串中首次出现的位置。instr函数在oracle/PLSQL中是返回要截取的字符串在源字符串中的位置。 字符串的位置是从1开始数instr(str1,str...
    99+
    2022-11-21
    OracleInstr函数 OracleInstr
  • oracle 存储过程、函数和触发器用法实例详解
    本文实例讲述了oracle 存储过程、函数和触发器用法。分享给大家供大家参考,具体如下: 一、存储过程和存储函数 指存储在数据库中供所有用户程序调用的子程序叫存储过程、存储函数。 创建存储过程 用CREAT...
    99+
    2022-10-18
  • Java 中synchronize函数的实例详解
    Java 中synchronize函数的实例详解java中的一个类的成员函数若用synchronized来修饰,则对应同一个对象,多个线程像调用这个对象的这个同步函数时必须等到上一个线程调用完才能由下一个线程调用。那么如果一个类同时有两个成...
    99+
    2023-05-31
    java synchronize ava
  • Python中的random函数实例详解
    Python中的random函数 random模块提供生成伪随机数的函数,在使用时需要导入random模块 1. random.random()最基本的随机函数,返回一个[0.0,1...
    99+
    2023-02-22
    Python random函数 Python中的 random
  • Oracle中的translate函数和replace函数的用法详解
    在Oracle中,`TRANSLATE`和`REPLACE`函数都是用于替换字符串的函数,但它们有一些不同之处。1. `TR...
    99+
    2023-08-16
    Oracle
  • python open函数中newline参数实例详解
    目录问题的由来具体实例总结问题的由来 我在读pythoncsv模块文档 看到了这样一句话 如果 csvfile 是文件对象,则打开它时应使用 newline=‘&rsqu...
    99+
    2022-11-11
  • C++中纯虚函数的实例详解
    目录虚函数和纯虚函数附:纯虚函数的应用总结虚函数和纯虚函数 之前学过虚函数,语法:virtual 返回值类型 函数名(参数列表),然后这个类也就变成的虚基类,然后子类重写父类的虚函数...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作