Заменить текст другим текстом в поле clob - PullRequest
0 голосов
/ 08 июля 2019

Получение ошибки при выполнении скрипта. Я пытаюсь заменить текст оракула to_date с преобразованием sql сервера (datetime_ Сообщение 102, Уровень 15, Состояние 1, Строка 9 Неверный синтаксис около '02'. Сообщение 132, Уровень 15, Состояние 1, Строка 9 Ярлык «HH24» уже объявлен. Имена меток должны быть уникальными в пакете запроса или хранимой процедуре. Сообщение 132, Уровень 15, Состояние 1, Строка 9 Ярлык «MI» уже объявлен. Имена меток должны быть уникальными в пакете запроса или хранимой процедуре.

Поискал в google решения о том, как работает замена, не смог найти решение о том, как обращаться с ярлыками, но я не думаю, что это пригодно для ярлыка. Я просто заменяю один текст другим. Похоже, SQL Server не любит определение времени оракула.

update table
set table.clobfield = REPLACE(table.clobfield,'BETWEEN TO_DATE('02/01/2011 00:00:00', 'MM/DD/YYYY HH24:MI:SS') AND TO_DATE('02/10/2011 23:59:59', 'MM/DD/YYYY HH24:MI:SS')',
'BETWEEN CONVERT(DATETIME, '02/01/2011 00:00:00') AND CONVERT(DATETIME,'02/10/2011 23:59:59')')

Я ожидаю, что текст sql sever заменит текст оракула to_date

Ответы [ 2 ]

0 голосов
/ 09 июля 2019

Вы были на правильном пути, вам просто нужно было избежать кавычек.

Вот как это должно выглядеть:

   update table set table.clobfield = REPLACE(table.clobfield,'BETWEEN TO_DATE(''02/01/2011 00:00:00'', ''MM/DD/YYYY HH24:MI:SS'') AND TO_DATE(''02/10/2011 23:59:59'', ''MM/DD/YYYY HH24:MI:SS'')',
'BETWEEN CONVERT(DATETIME, ''02/01/2011 00:00:00'') AND CONVERT(DATETIME,''02/10/2011 23:59:59'')')

Вы просто должны убедиться, что времена точно совпадают, иначе это не заменит значения.

0 голосов
/ 09 июля 2019

Если вы выполняете его в БД Oracle, тогда вы должны использовать Alternative quoting mechanism для формирования строки, содержащей специальные строковые символы (в вашем случае кавычка (')).

Вам просто нужно сформировать строку, используя q '##'. Так что все, что написано в вашей строке, будет считаться как есть.

Попробуйте следующее:

update table
set table.clobfield = 
REPLACE(table.clobfield,
q'#BETWEEN TO_DATE('02/01/2011 00:00:00', 'MM/DD/YYYY HH24:MI:SS') AND TO_DATE('02/10/2011 23:59:59', 'MM/DD/YYYY HH24:MI:SS')#',
q'#BETWEEN CONVERT(DATETIME, '02/01/2011 00:00:00') AND CONVERT(DATETIME,'02/10/2011 23:59:59')#')

Ура !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...