我有一个场景,我需要在表中插入NULL值。有人可以帮助我,因为我可以做到这一点。它不仅仅是在寻找使用NVL功能,还有任何值得赞赏的东西。
谢谢, 库马尔
答案 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);