Preciso atualizar / substituir os dados em datatable.column. A tabela possui um campo denominado Content
. Estou usando a REPLACE
função. Como o tipo de dados da coluna é NTEXT
, o SQL Server não me permite usar a REPLACE
função.
Não consigo alterar o tipo de dados porque este banco de dados é uma tabela de software de terceiros. Alterar o tipo de dados fará com que o aplicativo falhe.
UPDATE [CMS_DB_test].[dbo].[cms_HtmlText]
SET Content = REPLACE(Content,'ABC','DEF')
WHERE Content LIKE '%ABC%'
Recebo este erro:
Msg 8116, Nível 16, Estado 1, Linha 1 Tipo de dados de argumento ntext é inválido para o argumento 1 da função de substituição.
- Posso consertar isso com o T-SQL? Alguém tem um exemplo de como ler e fazer um loop?
- Como esta é uma conversão única, talvez eu possa mudar para outro tipo, mas infelizmente estou bagunçando os dados.
Há um campo de chave primária: nome: ID - inteiro - é uma identidade ... Portanto, preciso pensar sobre isso também. Talvez defina a identidade para N temporário.
Por favor, aconselhe sobre como conseguir a função REPLACE?
Aproximadamente. 3.000 declarações precisam ser atualizadas com uma nova solução.
fonte
Respostas:
SE seus dados não estourarem 4.000 caracteres E você estiver no SQL Server 2000 ou nível de compatibilidade 8 ou SQL Server 2000:
Para SQL Server 2005+:
fonte
NText
realmente necessário? Eu acho que atribuirNVarchar(MAX)
a oNText
lançaria automaticamente.Assumindo o SQL Server 2000, a seguinte questão StackOverflow deve resolver seu problema.
Se estiver usando o SQL Server 2005/2008, você pode usar o seguinte código (retirado daqui ):
fonte