2011-11-18 3 views
1

하나의 테이블에서 다른 테이블로 선택한 데이터를 삽입하는 스크립트를 작성해야합니다. 이전 테이블은 '예'를 한 열에 저장하지만 '예'대신 1을 삽 입하려고합니다.SQL - 삽입 값 안에 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

첫 번째 : 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 

오라클 만 더 컴팩트 한 형태가 디코드() 문 것을 (하지만 난 CASE를 사용하는 것이 좋습니다 것입니다, 이

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

또 다른 질문을 참조)뿐만 아니라 다른 DBMS에 더 읽기 및 휴대용이기 때문에, Yes (예)의 경우는 민감? 예, 예 및 예를 확인하고 싶다면 여전히 작동합니까 아니면 다른 작업을해야합니까? – Kaskade

+0

@Kaskade : 예, Oracle의 문자 비교는 기본적으로 대소 문자를 구분합니다. 하지만 'lower (old_col2) ='yes '를 사용하면 대소 문자를 구분하지 않아도됩니다. –

+0

훌륭한 감사합니다. 그런 기본적인 질문은 유감스럽게 생각합니다. 나는 SQL 개발자가 아니다. 일부 데이터를 복사하는 작업을 받았지만 그렇게 간단하지는 않습니다. 거의 거기 지금! – Kaskade

1

당신이 찾고있는 것은 CASE입니다.

CASE 
WHEN old_col2='Yes' then 1 
ELSE 0 
END 
관련 문제