Ver Mensaje Individual
  #9 (permalink)  
Antiguo 05/10/2011, 18:44
Avatar de matanga
matanga
 
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 17 años, 2 meses
Puntos: 85
Respuesta: Eliminar espacios en blanco de un campo tipo text

Los tipos varchar(max) y nvarchar(max) no están en SQL Server 2000, son de la versión 2005 en adelante y es una pena porque son muy útiles.

Para modificar datos tipo text necesitas las funciones writetext, updatetext y readtext, puedes ver un ejemplo en http://www.sqlteam.com/article/searc...-a-text-column

Las funciones replace, rtrim y ltrim no las puedes utilizar con tipos text, en este caso, tienes que leer por tramos (llamados porción o chunk de datos) dentro de un loop avanzando desde una posición dada más un offset, asignar el chunk a una variable varchar para modificar el valor según sea necesario y actualizar la tabla con la función updatetext, por ejemplo:

Código:
create table t100 (id numeric(8) not null identity, datos text)
Go
insert into t100 values ('xyxyxyxyxyxyxyxyxyxyxyxyxyxyxy')
Go

BEGIN
 DECLARE @StringActual varchar(10)
 SET @StringActual = 'init'

 DECLARE @StringNuevo varchar(10)
 DECLARE @Posicion int
 DECLARE @Cantidad int
 DECLARE @StringLen int
 
 DECLARE @ptr varbinary(16)

 SET @Posicion = 1 --posición inicial
 SET @Cantidad = 5 --offset de lectura

 SELECT @ptr = TEXTPTR(datos) FROM t100 WHERE id = 1

 WHILE (@StringActual != '')
  BEGIN
   SELECT @StringActual = SUBSTRING(datos, @Posicion, @Cantidad) 
    FROM t100 WHERE id = 1
   
   SET @StringNuevo = replace(@StringActual,'texto1','texto2') --código que modifica datos
   
   SET @StringLen = len(@StringActual) --solo es útil en caso de @Cantidad variable
   UPDATETEXT t100.datos @ptr @Posicion @StringLen @StringNuevo
   
   SET @Posicion = @Posicion + @Cantidad                                
  END                                                             

END
Go
Saludos