Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Replace no funciona con tipo dato TEXT ¿que hago?

Estas en el tema de Replace no funciona con tipo dato TEXT ¿que hago? en el foro de SQL Server en Foros del Web. Hola. Debo limpiar una base de datos que contiene caracteres BASURA. para lo cual ejecuto este comando update noticias set detalle = replace(detalle,CHAR(11),'') sin embargo ...
  #1 (permalink)  
Antiguo 04/11/2008, 08:33
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 22 años, 3 meses
Puntos: 16
Replace no funciona con tipo dato TEXT ¿que hago?

Hola.
Debo limpiar una base de datos que contiene caracteres BASURA.
para lo cual ejecuto este comando

update noticias set detalle = replace(detalle,CHAR(11),'')

sin embargo me arroja el error

El tipo de datos text no es válido para el argumento 1 de la función replace.

Que puedo hacer para lograr hacer esta tarea????
  #2 (permalink)  
Antiguo 04/11/2008, 09:08
 
Fecha de Ingreso: julio-2008
Ubicación: Hermosillo, Sonora
Mensajes: 95
Antigüedad: 16 años, 4 meses
Puntos: 3
Respuesta: Replace no funciona con tipo dato TEXT ¿que hago?

Efectivamente, el Replace no puede funcionar con un campo de tipo Text.
Sin embargo, para hacer algo rápido pero asegurandote de que la información no excede de 255 caracteres... lo que puedes hacer es un substring al campo y actualizar, eso si te va a permitir.

Salu2...
  #3 (permalink)  
Antiguo 04/11/2008, 09:25
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 22 años, 3 meses
Puntos: 16
De acuerdo Respuesta: Replace no funciona con tipo dato TEXT ¿que hago?







asi lo solucione:
Código PHP:
set xact_abort on
begin tran

declare @otxt varchar(1000)
set @otxt CHAR(11)

declare @
ntxt varchar(1000)
set @ntxt ''

declare @txtlen int
set 
@txtlen len(@otxt)

declare @
ptr binary(16)
declare @
pos int
declare @id int

declare curs cursor local fast_forward
for
select 
    id_noticiA
,
    
textptr(detalle),
    
charindex(@otxtdetalle)-1
from 
    noticias 
where 
    detalle 
like 
    
'%' + @otxt +'%'

open curs

fetch next from curs into 
@id, @ptr, @pos

while @@fetch_status 0
begin
    
print 'Text found in row id=' cast(@id as varchar) + ' at pos=' cast(@pos as varchar)
    
    
updatetext noticias .detalle @ptr @pos @txtlen @ntxt

    fetch next from curs into 
@id, @ptr, @pos    
end

close curs
deallocate curs

commit tran 
Basandome en este articulo.

http://www.sqlteam.com/article/searc...-a-text-column


Lo publico aqui por si a alguien le sirve.
adios
  #4 (permalink)  
Antiguo 06/11/2008, 14:47
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 19 años, 3 meses
Puntos: 39
Respuesta: Replace no funciona con tipo dato TEXT ¿que hago?

Has probado asi?
Cita:
update noticias set detalle = replace(convert(varchar(8000),detalle),CHAR(11),'' )
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 13:57.