Servidor SQL procurar e substituir no campo de texto

eu tenho um banco de dados no servidor sql 2005 que foi criado a partir do servidor SQL 2000 e ainda está usando campos de tipo de texto em vez de varchar(max).

preciso de encontrar e substituir uma sequência de caracteres no campo de texto, mas todos os exemplos de como fazer isto que encontrei não parecem funcionar para mim. Parece que o comando UPDATETEXT requer que os dois parâmetros "insert_offset " e" delete_length " sejam definidos explicitamente, mas a string que estou procurando pode aparecer no texto em qualquer ponto ou mesmo em vários pontos da mesma célula. Meu entendimento destes dois parâmetros é que a string im searching para sempre estará no mesmo lugar, de modo que o insert_offset é o número de espaços no texto que o comando UPDATETEXT vai começar a substituir o texto.

exemplo: é necessário encontrar: &lt;u&gt; e substituí-lo por: <u>

exemplo do campo de texto:

*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;.
Alguém me pode ajudar com isto? Obrigado!

Author: marc_s, 2010-04-15

1 answers

Finalmente descobri. Foi enterrado nos comentários ao artigo publicado pelo jfrobishow. Muito obrigada. Eis toda a resposta que me levou à solução:

Citação: originalmente publicado por fredclown

Se usar o SQL 2005, poderá usar o replace com um tipo de texto. Tudo o que tens fazer é o abaixo ...

Field = replace(cast(campo como varchar (max))),'string' ,'replacement')

Fácil como uma torta. Dois polegares para cima para Fredclown!!! comando trabalha como um encanto para mim também. Presente é o que eu escrevi a minha declaração de atualização para Procurar e substituir num campo de texto em SQL server 2005 database
UPDATE TableName SET DBTextField = REPLACE(CAST(DBTextField AS varchar(MAX))
                                               ,'SearchText', 'ReplaceText')
FROM TableName
WHERE CHARINDEX('SearchText',CAST(DBTextField as varchar(MAX)))>0

Nota: esta pode truncar o tamanho de dbfield , mas se é uma longa coluna de texto torná-lo nvarchar(max) e você não deve ter nenhum truncamento!

 66
Author: incubushead, 2014-04-15 09:54:30