oracle数据插入的某个字段的判断 5C

两个表ta和tb
将tb中的数据插入ta中,
insert into ta (name, sex, age, xx)
select name, sex,age ,(xx的值)

from tb
where
tb.name = ...
关于xx的值,根据tb表中的字段yy来确定,如果yy为空,xx为1, 如果yy飞空, xx为2
xx的值那一块代码应该怎么写,多谢

5个回答

使用Oracle自带的NVL2函数最简单
insert into ta (name, sex, age, xx)
select name, sex,age ,nvl2(yy,2,1)
from tb
where
tb.name = ...

函数说明:
nvl2(E1, E2, E3)的功能为:如果E1为NULL,则函数返回E3,若E1不为null,则返回E2。

insert into ta (name, sex, age, xx)
select name, sex,age ,case when tb.yy is null then 1 else 2 end

from tb
where
tb.name = ...

qq_33338806
qq_33338806 NVL2(yy, 2, 1) NVL2(E1, E2, E3)的功能为:如果E1为NULL,则函数返回E3,若E1不为null,则返回E2。
接近 2 年之前 回复

两个表ta和tb
将tb中的数据插入ta中,
insert into ta (name, sex, age, xx)
select name, sex,age ,(xx的值)

from tb
where
tb.name = ...
关于xx的值,根据tb表中的字段yy来确定,如果yy为空,xx为1, 如果yy飞空, xx为2
xx的值 可以用 decode (yy,null,'1','2')
你可以找下decode 函数

wangzhengziyu
wangzhengziyu 这样写不对的吧,你用=null是不能获取到数据的,null在数据库中是特殊字段要用is null进行判断的
接近 2 年之前 回复

case when then,解决这个很合适

NVL2(yy, 2, 1) NVL2(E1, E2, E3)的功能为:如果E1为NULL,则函数返回E3,若E1不为null,则返回E2。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐