Oracle中的NVL和NVL2功能是什么?他们有什么不同?

时间:2016-04-29 10:43:19

标签: sql oracle

我正在寻找这些功能的简单示例的详细答案。

3 个答案:

答案 0 :(得分:16)

NVL 检查第一个参数是否为null并返回第二个参数:

select nvl(null, 'arg2') from dual

在此示例中,结果为:arg2;

select nvl('arg1', 'arg2') from dual

并且在这一个:arg1;

NVL2 有不同的逻辑。如果第一个参数不为null,则NVL2返回第二个参数,但在其他情况下,它将返回第三个参数:

select nvl2('arg1', 'arg2', 'arg3') from dual

结果:arg2

select nvl2(null, 'arg2', 'arg3') from dual

结果:arg3

答案 1 :(得分:0)

NVL(exp1,exp2)和NVL2(exp1,exp2,exp3)函数均检查值exp1以查看其是否为空。

使用NVL(exp1,exp2)函数,如果exp1不为null,则返回exp1的值;否则,返回0。否则,返回exp2的值,但大小写与exp1相同。

使用NVL2(exp1,exp2,exp3)函数,如果exp1不为null,则返回exp2;否则,返回false。否则,将返回exp3的值。

答案 2 :(得分:0)

Nvl(arg1,arg2) nvl 用于转换空值。 在 nvl 中,如果参数 1 为空,则返回参数 2,但参数 1 不为空则返回自身。 在 nvl2 中的 nvl2 (arg1,arg2,arg3) 中,它根据给定的数字将任何数字转换为 null 。 如果给定数字的 arg 1 为空,则返回 arg3 另一方面,如果它不为空,则返回参数 2