Поиск и замена части строки в базе данных - PullRequest
66 голосов
/ 03 марта 2009

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

Ответы [ 6 ]

98 голосов
/ 03 марта 2009

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

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

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

84 голосов
/ 03 марта 2009

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

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

update VersionedFields
set Value = replace(value,'> </iframe>','</a>')
13 голосов
/ 03 марта 2009
update VersionedFields
set Value = replace(replace(value,'<iframe','<a>iframe'), '> </iframe>','</a>')

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

4 голосов
/ 13 апреля 2013

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

0 голосов
/ 28 июля 2017

Обновление базы данных и Установить fieldName = Replace (fieldName, 'FindString', 'ReplaceString')

0 голосов
/ 03 марта 2009

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

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