SQL - возможно ли использовать if внутри значений вставки - PullRequest
1 голос
/ 18 ноября 2011

Мне нужно написать скрипт для вставки данных, выбранных из одной таблицы в другую.Старая таблица хранит значение «Да» в одном столбце, но я хочу вставить 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 ]

5 голосов
/ 18 ноября 2011

Во-первых: если вы основываете свою вставку на SELECT, то не должны использовать предложение VALUES.

Чтобы получить условное значение, используйте оператор CASE (стандарт ANSI):

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

Оператором decode () будет только более компактная форма (но я бы порекомендовалиспользуйте CASE, потому что он более читабелен и переносим на другие СУБД)

insert into new_table (new_col1, new_col2)
select old_col1, 
       decode(old_col2, 'Yes', 1, 0)
from old_table
1 голос
/ 18 ноября 2011

То, что вы ищете, это оператор CASE.

CASE
WHEN old_col2='Yes' then 1 
ELSE 0
END
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...