2015-10-25 2 views
0

Мне нужно выполнить запрос ниже, но это дает мне ошибку.Как вставить строку в таблицу с пробелом в оракуле

INSERT ALL 
INTO tests VALUES 
    (
    '25-10-2015 15:58:02', 
    'a', 
    238530 
) 
INTO tests VALUES 
    (
    '25-10-2015 15:58:02', 
    'b', 
    1234 
) 
INTO tests VALUES 
    (
    '25-10-2015 15:58:02', 
    'c', 
    4759 
) 
INTO tests VALUES 
    (
    '25-10-2015 15:58:02', 
    'd', 
    36734 
) 
SELECT * FROM dual; 

Есть ли способ, в котором я могу вставить строку с пространством в строке.

ответ

0

Вы можете, конечно, вставить пробел, пока он находится между кавычками ('). Тем не менее, дата является другим типом и может потребоваться преобразовать. Например:

insert into tests values (TO_DATE('25-10-2015 15:58:02'...), 'd', 36734) 

Однако обратите внимание, что вам нужно ссылаться на TO_DATE syntax для правильного форматирования. Главное, что вам нужно проверить схему тестов, чтобы убедиться, что она ищет дату. Если это формат varchar или какой-либо другой тип строки, тогда он должен работать, если ваша строка не слишком длинная. Если это дата, однако, вам нужно передать ей дату.

+0

Не зависит от ** NLS_DATE_FORMAT **. 'TO_DATE' зависит от NLS, вы должны указать модель формата. –

0
'25-10-2015 15:58:02' 

Выше STRING и не ДАТА. Вы должны преобразовать его явно в дату, используя TO_DATE и надлежащее ФОРМА-МОДЕЛЬ.

Например,

INSERT ALL 
INTO tests VALUES 
    (
    TO_DATE('25-10-2015 15:58:02','DD-MM-YYYY HH24:MI:SS'), 
    'a', 
    238530 
) 
0

Кроме Oracle, патентованный TO_CHAR вы также можете написать стандартный SQL Отметка буквальным (который поддерживается большинством DBMSes, включая Oracle), TIMESTAMP сопровождаемый «гггг-мм-дд чч: mi: ss 'string (независимо от NLS_DATE_FORMAT):

TIMESTAMP '2015-10-25 15:58:02' 
Смежные вопросы