当我为记录插入null值时,如何使用NVL函数

时间:2013-02-11 22:37:13

标签: oracle

我有一个场景,我需要在表中插入NULL值。有人可以帮助我,因为我可以做到这一点。它不仅仅是在寻找使用NVL功能,还有任何值得赞赏的东西。

谢谢, 库马尔

2 个答案:

答案 0 :(得分:1)

听起来像你想要NVL2

即:

NVL2(your_var, 'val if not null', 'val if null')
也可以使用

或case / decode

例如:

SQL>   var a varchar2(11)
SQL> exec :a := 'not null';

PL/SQL procedure successfully completed.

SQL> select nvl2(:a, 'c', 'b') "nvl2",
  2         case when :a is null then 'b' else 'c' end "case",
  3         decode(:a, null, 'b', 'c') "decode"
  4    from dual;

n c d
- - -
c c c

SQL> exec :a := '';

PL/SQL procedure successfully completed.

SQL> select nvl2(:a, 'c', 'b') "nvl2",
  2         case when :a is null then 'b' else 'c' end "case",
  3         decode(:a, null, 'b', 'c') "decode"
  4    from dual;

n c d
- - -
b b b

所以,如果你想要值as-is,如果不是null,那么硬编码,如果它的null,那么:

nvl2(age, age, 42)

所以,如果age为空,则转到42,否则取age的值。

答案 1 :(得分:0)

Insert into mytable (ID, Name, Age) values (1,'John Smith', Null);