说说 Oracle 的 NVL 与 NVL2 函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了说说 Oracle 的 NVL 与 NVL2 函数相关的知识,希望对你有一定的参考价值。

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

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

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

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

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

运行结果:

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

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

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

运行结果:

以上是关于说说 Oracle 的 NVL 与 NVL2 函数的主要内容,如果未能解决你的问题,请参考以下文章

oracle的nvl和nvl2是啥函数,两者区别是啥呢

oracle的nvl和nvl2是啥函数,两者区别是啥呢

oracle 函数 NVL2...NVL

nvl、nvl2、nullif、coalesce函数的区别

oracle NVL,NVL2,NULLIF,COALESCE

nvl 与 nvl2