Ответ 1
Я думаю, что 2 вызова обновления должны делать
update VersionedFields
set Value = replace(value,'<iframe','<a><iframe')
update VersionedFields
set Value = replace(value,'> </iframe>','</a>')
Мне нужно заменить все теги iframe, хранящиеся как nvarchar в моей базе данных. Я могу найти записи, используя следующий sql-вопрос:
SELECT * FROM databasename..VersionedFields WHERE Value LIKE '%<iframe%'
Скажем, я хочу заменить следующий сегмент кода:
code before iframe <iframe src="yadayada"> </iframe> code after iframe
При этом:
code before iframe <a>iframe src="yadayada"</a> code after iframe
Я думаю, что 2 вызова обновления должны делать
update VersionedFields
set Value = replace(value,'<iframe','<a><iframe')
update VersionedFields
set Value = replace(value,'> </iframe>','</a>')
Вы можете сделать это с помощью инструкции UPDATE, устанавливающей значение с помощью REPLACE
UPDATE
Table
SET
Column = Replace(Column, 'find value', 'replacement value')
WHERE
xxx
Вы будете очень осторожны при этом! Я настоятельно рекомендую сначала сделать резервную копию.
update VersionedFields
set Value = replace(replace(value,'<iframe','<a>iframe'), '> </iframe>','</a>')
и вы делаете это за один проход.
Я столкнулся с аналогичной проблемой. Я экспортировал содержимое db в один файл sql и использовал TextEdit, чтобы найти и заменить все, что мне нужно. Простота ftw!
Я бы рассмотрел возможность записи функции замены CLR с помощью RegEx для такого рода манипулирования строками.
Обновить базу данных и Set fieldName = Replace (fieldName, 'FindString', 'ReplaceString')