SQL Server найти и заменить в поле TEXT - PullRequest
37 голосов
/ 15 апреля 2010

У меня есть база данных в SQL Server 2005, которая была взята из SQL Server 2000 и до сих пор использует поля типа TEXT вместо varchar (max).

Мне нужно найти и заменить строку символов в текстовом поле, но все примеры того, как это сделать, которые я нашел, не похоже, что они будут работать для меня. Кажется, команда UPDATETEXT требует, чтобы два параметра "insert_offset" и "delete_length" были установлены явно, но искомая строка может отображаться в тексте в любой точке или даже в нескольких точках одной и той же ячейки. Насколько я понимаю, эти два параметра таковы, что искомая строка всегда будет в одном и том же месте, так что insert_offset - это количество пробелов в тексте, которое команда UPDATETEXT начнет заменять текстом.

Пример: нужно найти: &lt;u&gt; и заменить его на: <u>

Пример текстового поля:

*Everyone in the room was <b>&lt;u&gt;tired&lt;/u&gt;.</b><br>Then they woke <b>&lt;u&gt;up&lt;/u&gt;.

Может кто-нибудь помочь мне с этим? СПАСИБО!

1 Ответ

68 голосов
/ 15 апреля 2010

Я наконец понял это. Он был похоронен в комментариях к опубликованной статье. Большое вам спасибо.

Вот полный ответ, который привел меня к решению:

цитата: Первоначально опубликовано fredclown

Если вы используете SQL 2005, вы можете использовать замену на текстовый тип. Все у вас есть сделать это ниже ...

field = replace (приведение (поле как varchar (max)), 'строка', 'замена')

Легко, как пирог.

Два больших пальца до Фредклоуна !!! команда работать как шарм для меня тоже. это это то, что я написал свое заявление об обновлении Найти и заменить в текстовом поле в База данных SQL Server 2005

UPDATE TableName SET DBTextField = REPLACE(CAST(DBTextField AS varchar(MAX))
                                               ,'SearchText', 'ReplaceText')
FROM TableName
WHERE CHARINDEX('SearchText',CAST(DBTextField as varchar(MAX)))>0

Примечание: это может усечь размер вашего dbfield, но если это длинный текстовый столбец, сделайте его nvarchar (max) , и вы не должны не получай усечения!

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