Oracle NVL2() 函数使用指南

Oracle NVL2() 是一个内置函数,它允许您根据表达式是否为空来确定要返回的值。

Oracle NVL2() 语法

这里是 Oracle NVL2() 函数的语法:

NVL2(expr1, expr2, expr3)

参数

expr1

必需的。一个值或者表达式。

expr2

必需的。一个值或者表达式。

expr3

必需的。一个值或者表达式。

参数 expr1 可以有任何数据类型。参数 expr2expr3 可以有除了LONG之外的任何数据类型。

如果 expr2expr3 的数据类型不同,则 Oracle 数据库会将一种隐式转换为另一种。如果它们不能隐式转换,则数据库返回错误。如果 expr2 是字符型或数值型数据,则隐式转换实现如下:

  • 如果 expr2 是字符数据,则 Oracle 数据库将转换 expr3 为返回值之前的 expr2 的数据类型,除非 expr3 是空常量。在这种情况下,不需要进行数据类型转换,数据库以 expr2 的字符集返回 VARCHAR2
  • 如果 expr2 是数字数据,则 Oracle 数据库确定哪个参数具有最高的数字优先级,隐式地将另一个参数转换为该数据类型,然后返回该数据类型。

返回值

如果 expr1 不为 NULL Oracle NVL2(expr1, expr2, expr3) 函数返回 expr2,否则该函数返回 expr3

如果任意一个参数为 NULLNVL2() 将返回 NULL

Oracle NVL2() 示例

SELECT
    NVL2(1, 'A', 'B'),
    NVL2(NULL, 'A', 'B')
FROM dual;

输出:

NVL2(1,'A','B')    NVL2(NULL,'A','B')
__________________ _____________________
A                  B

在本示例中,NVL2(1,'A','B') 返回了 A,因为第一个参数不是 NULLNVL2(NULL,'A','B') 返回了 B,因为第一个参数是 NULL

结论

Oracle NVL2() 是一个内置函数,它允许您根据表达式是否为空来确定要返回的值。