博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
说说 Oracle 的 NVL 与 NVL2 函数
阅读量:1904 次
发布时间:2019-04-26

本文共 1080 字,大约阅读时间需要 3 分钟。

在这里插入图片描述

1 NVL 函数

1.1 语法

如果需要为查询出的为 null 的字段,设置一个默认值,就可以使用 NVL 函数。如果 expr1 为 null ,则 NVL 会返回 expr2。 如果 expr1 不为 null ,则 NVL 返回 expr1 。

参数 expr1 和 expr2 可以是任何 Oracle 数据类型。如果这两个参数的数据类型不同,那么 Oracle 隐式转换。如果不能转换,则会返回一个错误。

1.2 示例

假设有一张表,包含一个 PASSWORD_CHANGE_DATE 字段,它是 Date 类型。我们希望查询出来的结果集中 PASSWORD_CHANGE_DATE 字段如果为 null,则显示为 ‘未改动’:

select s.staff_name,nvl(s.PASSWORD_CHANGE_DATE,'未改动')from ncc_staff_manager s

如果这样写,就会抛出错误。因为 NVL 的 expr1 是 Date 类型,而 expr2 却是字符型。

修改 SQL 语句,使用 to_char 对其进行类型转换:

select s.staff_name,nvl(to_char(s.PASSWORD_CHANGE_DATE,                                           'yyyy-mm-dd hh24:mi:ss'),'未改动')from ncc_staff_manager s

运行结果:

2 NVL2 函数

2.1 语法

NVL2 可以根据指定表达式 expr1 是否为空来决定实际的返回值。如果 expr1 不为 null,则 返回 expr2。 如果 expr1 为 null,则返回 expr3。 类似 Java 中的三元选择符。

参数 expr1 可以是任何数据类型。而参数 expr2 和 expr3 可以是除了 LONG 之外的其它数据类型。

2.2 示例

还是之前的那张表。我们希望查询出来的结果集中 PASSWORD_CHANGE_DATE 字段如果为 null,则显示为 ‘未改动’;如果字段不为 null,则显示为 '已改动’。

select s.staff_name,       nvl2(to_char(s.PASSWORD_CHANGE_DATE, 'yyyy-mm-dd hh24:mi:ss'),            '未改动',            '已改动')  from ncc_staff_manager s

运行结果:

转载地址:http://prbcf.baihongyu.com/

你可能感兴趣的文章
基于java的企业车辆管理系统的设计与实现
查看>>
基于java的企业员工管理系统的设计与实现
查看>>
基于java的赛北村旅游网站的设计与实现
查看>>
基于java的搜索引擎的设计与实现
查看>>
基于java的陶瓷工厂进销存管理系统的设计与实现
查看>>
基于java的网络考试系统的设计与实现
查看>>
基于java的网络爬虫技术的网络新闻分析
查看>>
病历管理系统设计与实现
查看>>
高校固定资产管理系统
查看>>
关于java博网即时通讯软件的设计与实现
查看>>
基于JAVA_JSP电子书下载系统
查看>>
基于java出租车计价器设计与实现
查看>>
基于java的B2C的网上拍卖系统
查看>>
基于java的百货中心供应链管理系统
查看>>
基于java的保险业务管理系统的设计与实现
查看>>
基于java的采购管理系统
查看>>
基于java的仓库管理系统的设计与实现
查看>>
基于java的城市管理系统
查看>>
基于java的固定资产管理系统的设计与实现
查看>>
基于java的户籍管理系统的设计与实现
查看>>