我需要编写一个脚本来将从一个表中选择的数据插入到另一个表中。旧表在一列中存储值“是”,但我想插入1而不是“是”
有没有办法做到这一点。在我的脑海中,这就是我想要做的事情:
insert into new_table (new_col1, new_col2)
values (select from old_table(old_col1, (if old_col2='Yes' then 1 else 0))
答案 0 :(得分:5)
首先:如果你的插入基于SELECT,则不能使用VALUES
子句。
要获取条件值,请使用(ANSI标准)CASE语句:
insert into new_table (new_col1, new_col2)
select old_col1,
case
when old_col2 = 'Yes' then 1
else 0
end
from old_table
Oracle只有更紧凑的形式才是decode()语句(但我建议使用CASE,因为它对其他DBMS更具可读性和可移植性)
insert into new_table (new_col1, new_col2)
select old_col1,
decode(old_col2, 'Yes', 1, 0)
from old_table
答案 1 :(得分:1)
您正在寻找的是CASE
声明。
CASE
WHEN old_col2='Yes' then 1
ELSE 0
END