2011-11-18 51 views
1

我需要編寫腳本以將從一個表中選擇的數據插入另一個表中。舊錶在一列中存儲值「是」,但我想插入1而不是「是」SQL - 是否有可能在插入值的內部有if if

有沒有辦法做到這一點。在我的腦海中,這是我想要做的:

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

見http://stackoverflow.com/q/8176902/447514 – Gaius

回答

4

首先:如果你立足於a。選擇插入,則不能使用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 

的甲骨文只有更緊湊的形式將是解碼()語句(但我建議你使用的情況下,因爲它是更具可讀性和移植到其他DBMS也一樣)

insert into new_table (new_col1, new_col2) 
select old_col1, 
     decode(old_col2, 'Yes', 1, 0) 
from old_table 
+0

另外一個問題,就是是區分大小寫?如果我想檢查是,是和是否它仍然工作,或者我需要做別的事情。 – Kaskade

+0

@Kaskade:是的,默認情況下,Oracle中的字符比較是區分大小寫的。但是你可以使用'lower(old_col2)='yes''來使測試不區分大小寫。 –

+0

輝煌的謝謝 - 遺憾的是這樣一個基本的問題。我不是一個SQL開發人員。我被賦予了一項任務來複制一些數據,但事實並非如此簡單。現在幾乎在那裏! – Kaskade

1

你在找什麼是CASE聲明。

CASE 
WHEN old_col2='Yes' then 1 
ELSE 0 
END 
相關問題