SQL - 是否可以在插入值中包含if

时间:2011-11-18 09:09:16

标签: sql oracle

我需要编写一个脚本来将从一个表中选择的数据插入到另一个表中。旧表在一列中存储值“是”,但我想插入1而不是“是”

有没有办法做到这一点。在我的脑海中,这就是我想要做的事情:

insert into new_table (new_col1, new_col2)
values (select from old_table(old_col1, (if old_col2='Yes' then 1 else 0))

2 个答案:

答案 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