Поиск и замена части строки в базе данных

Мне нужно заменить все теги 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

Ответ 1

Я думаю, что 2 вызова обновления должны делать

update VersionedFields
set Value = replace(value,'<iframe','<a><iframe')

update VersionedFields
set Value = replace(value,'> </iframe>','</a>')

Ответ 2

Вы можете сделать это с помощью инструкции UPDATE, устанавливающей значение с помощью REPLACE

UPDATE
    Table
SET
    Column = Replace(Column, 'find value', 'replacement value')
WHERE
    xxx

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

Ответ 3

update VersionedFields
set Value = replace(replace(value,'<iframe','<a>iframe'), '> </iframe>','</a>')

и вы делаете это за один проход.

Ответ 4

Я столкнулся с аналогичной проблемой. Я экспортировал содержимое db в один файл sql и использовал TextEdit, чтобы найти и заменить все, что мне нужно. Простота ftw!

Ответ 5

Я бы рассмотрел возможность записи функции замены CLR с помощью RegEx для такого рода манипулирования строками.

Ответ 6

Обновить базу данных и Set fieldName = Replace (fieldName, 'FindString', 'ReplaceString')