2013-04-25 5 views
0

У меня есть запрос:Как вставить несколько значений в одно поле?

INSERT 
INTO I#journal 
    (
    Type_, 
    Mndnr, 
    Obj, 
    Status, 
    Reason 
) 
    VALUES 
    (
    'PO', 
    '0177', 
    '000222', 
    'NEW', 
    '1' 
) 

это один работает нормально. Но вместо «1» Я хочу, чтобы вставить несколько значений в одном поле, как «1», «2», «3»

И обычно вы делаете это так:

INSERT 
INTO I#journal 
    (
    Type_, 
    Mndnr, 
    Obj, 
    Status, 
    Reason 
) 
    VALUES 
    (
    'PO', 
    '0177', 
    '000222e', 
    'NEW', 
    '1,2,3' 
) 

Но как сделать это, если значения будут помещены там как '1','2','3'?

INSERT 
INTO I#journal 
    (
    Type_, 
    Mndnr, 
    Obj, 
    Status, 
    Reason 
) 
    VALUES 
    (
    'PO', 
    '0177', 
    '000222e', 
    'NEW', 
    '1','2','3' 
) 

Таким образом, мы не можем изменения '1','2','3' (из-за некоторой автоматизации), но мы можем добавить что-либо раньше, и мимо этой строки. В информации о результатах в поле Reason должно быть что-то вроде 1,2,3

Как это сделать?

+0

Вы должны использовать управляющие символы. – Luv

+0

Вы имеете в виду, что вы получаете ''1', '2', '3'' и хотите вставить'' 1,2,3''? –

+0

@ A.B.Cade да, извините, я только что задал вопрос. Таким образом, у меня будут «1», «2», «3», но я хочу вставить их как литерал в одно поле «1,2,3» « – VextoR

ответ

1

Try:

INSERT 
INTO I#journal 
    (
    Type_, 
    Mndnr, 
    Obj, 
    Status, 
    Reason 
) 
    VALUES 
    (
    'PO', 
    '0177', 
    '000222e', 
    'NEW', 
    replace(q'['1','2','3']', q'[',']', '') ) 
+0

спасибо! Почти! Я получил строку как '123 ', но это должно быть некоторое разделение, например' 1,2,3' – VextoR

+0

, изменено на 'replace (q' ['1', '2', '3'] ', q' [ ','] ',', ') 'теперь это прекрасно! – VextoR

0

попробуйте это INSERT.

INTO I#journal 
    (
    Type_, 
    Mndnr, 
    Obj, 
    Status, 
    Reason 
) 
    VALUES 
    (
    'PO', 
    '0177', 
    '000222', 
    'NEW', 
    '1' 
),(
    'PO', 
    '0177', 
    '000222e', 
    'NEW', 
    '1,2,3' 
) 
+0

:« 'Ошибка в командной строке: 18 столбцов : 3 Сообщение об ошибке: Ошибка SQL: ORA-00933: неверное завершение SQL-предложения 00933. 00000 - «SQL-команда не выполнена должным образом» ' – VextoR

+0

ясно, что это не сработает –

2

значение Вставить replace(q'$'1','2','3'$', '''', '') Одинарные кавычки (') является маскирующим. т.е.

INSERT 
INTO I#journal 
    (
    Type_, 
    Mndnr, 
    Obj, 
    Status, 
    Reason 
) 
    VALUES 
    (
    'PO', 
    '0177', 
    '000222', 
    'NEW', 
    replace(q'$'1','2','3'$', '''', '') 
); 
+0

спасибо! Но я не могу этого сделать. Поскольку эти значения идут туда как «1», «2», «3», и я могу изменить что-либо до и после этой строки, но не могу изменить строку itsef – VextoR

+0

Как насчет замены одиночных кавычек двойными одинарными кавычками ? – TechDo

+0

вот так? ''' 1 ',' 2 ',' 3 '" 'не работает. 'Ошибка в командной строке: 16 Столбец: 5 Отчет об ошибке: Ошибка SQL: ORA-00984: употребление столбца здесь недопустимо 00984. 00000 -« column not allowed here »' – VextoR

0

Попробуйте

INSERT INTO I#journal 
(
    Type_, 
    Mndnr, 
    Obj, 
    Status, 
    Reason 
) 
VALUES 
(
    'PO', 
    '0177', 
    '000222', 
    'NEW', 
    '''1'',''2'',''3''' 
) 
+0

Возможно, это сработает, но не могли бы вы объяснить, почему это сработает? – danjuggler

Смежные вопросы