Usuário com melhor resposta
REPLACE Sql Server

Pergunta
-
Olá.Estou com o seguinte problema:Numa procedure, tenho que retornar o resultado de um REPLACE de um campo TEXT.SELECT REPLACE(text_field, 'x', @variavellocal) FROM tbTableMas ele retorna o erro: "Argument data type text is invalid for argument 1 of replace function."Alguém tem uma solução?Obrigado.
Respostas
-
Boa Tarde,
Se você estiver com o 2000 realmente não há solução. O comando REPLACE não pode ser utilizado com o TEXT. Você terá que efetuar a substituição na aplicação.
Se você estiver utilizando o 2005 (ou superior) use o VARCHAR(MAX) ao invés do TEXT.
[ ]s,
Gustavo Maia Aguiar
http://gustavomaiaaguiar.spaces.live.com
Como importar e exportar imagens entre o SQL Server e o File System ? – Parte II
http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!612.entry
Classifique as respostas. O seu feedback é imprescindível- Marcado como Resposta André Aranha quarta-feira, 24 de junho de 2009 17:42
-
André...
O varchar(MAX) é o substituto correto para o campo do tipo TEXT. Ou seja, se você puder, troque pelo varchar(MAX). O varchar(MAX) suporta até 2GB por campo...
MCT / MCITP - Database Administrator MCITP - Database Developer 2008- Marcado como Resposta André Aranha quarta-feira, 24 de junho de 2009 17:42
Todas as Respostas
-
Boa Tarde,
Se você estiver com o 2000 realmente não há solução. O comando REPLACE não pode ser utilizado com o TEXT. Você terá que efetuar a substituição na aplicação.
Se você estiver utilizando o 2005 (ou superior) use o VARCHAR(MAX) ao invés do TEXT.
[ ]s,
Gustavo Maia Aguiar
http://gustavomaiaaguiar.spaces.live.com
Como importar e exportar imagens entre o SQL Server e o File System ? – Parte II
http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!612.entry
Classifique as respostas. O seu feedback é imprescindível- Marcado como Resposta André Aranha quarta-feira, 24 de junho de 2009 17:42
-
André,
Você não pode usar o REPLACE em um campo do tipo TEXT. Você deve primeiro converter explicitamente para varchar (por exemplo):
SELECT REPLACE(CAST(text_field as varchar), 'x', @variavellocal) FROM tbTable
MCT / MCITP - Database Administrator MCITP - Database Developer 2008 -
Olá!Uso o 2005, e aparentemente sua dica funcionou.Eu fiz REPLACE ( CAST(campo_texto as varchar(MAX)), 'x', 'y').Fazendo REPLACE ( CAST(campo_texto as varchar), 'x', 'y'), sem o MAX, funciona também.Nessas duas maneiras só vai retornar o texto em forma de varchar, do tamanho que for? Mesmo que tenha mais de 8.000 caracteres?No contexto em que estou desenvolvendo não pode haver corte de caracter de jeito nenhum...Obrigado.
-
André...
O varchar(MAX) é o substituto correto para o campo do tipo TEXT. Ou seja, se você puder, troque pelo varchar(MAX). O varchar(MAX) suporta até 2GB por campo...
MCT / MCITP - Database Administrator MCITP - Database Developer 2008- Marcado como Resposta André Aranha quarta-feira, 24 de junho de 2009 17:42