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

[SOLUCIONADO] Como quitar espacios intermedios en SQL con replace

Estas en el tema de Como quitar espacios intermedios en SQL con replace en el foro de SQL Server en Foros del Web. Buenos días, recurro al foro y espero me puedan colaborar. Pasa que necesito actualizar los registros de la columna Nombre y quitar espacios intermedios. Ya ...
  #1 (permalink)  
Antiguo 12/11/2013, 17:02
 
Fecha de Ingreso: abril-2007
Mensajes: 119
Antigüedad: 17 años
Puntos: 1
Pregunta Como quitar espacios intermedios en SQL con replace

Buenos días, recurro al foro y espero me puedan colaborar.

Pasa que necesito actualizar los registros de la columna Nombre y quitar espacios intermedios.

Ya usé la funcion replace, pero esta me funciona únicamnete para espacios intermedios dobles, es decir.

@Nombre='Carlos%%Morales'

SI utilizo update Nombre=replace(@Nombre,'%%','%') funciona a la perfeccion. El resultado es Carlos%Morales

Pero que pasa si tengo @Nombre='Carlos%%%%Morales%%%Gonzalez'

¿Como resuelvo?

Nota: Cada % representa un espacio.

Saludos.
  #2 (permalink)  
Antiguo 12/11/2013, 17:52
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Como quitar espacios intermedios en SQL con replace

Código SQL:
Ver original
  1. DECLARE @Nombre VARCHAR(MAX)
  2. DECLARE @total INT
  3. DECLARE @x INT
  4. DECLARE @letra VARCHAR(20)
  5. DECLARE @palabra VARCHAR(MAX)
  6. DECLARE @contador INT
  7. SET @contador=0
  8. SET @Nombre='Carlos      Morales       Gonzalez   de mi    casa'
  9. SET @palabra=''
  10. SET @letra=''
  11. SET @x=1
  12. while @x<=len(@nombre)
  13. BEGIN    
  14.     SET @letra=SUBSTRING(@nombre,@x,1) 
  15.     IF(@letra=' ')
  16.     BEGIN
  17.         SET @contador=@contador+1  
  18.     END
  19.     ELSE
  20.     BEGIN
  21.         SET @contador=0
  22.     END
  23.     IF(@contador<=1)
  24.       SET @palabra=@palabra + @letra
  25. SET @x=@x+1
  26. END
  27. print @palabra

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 13/11/2013, 02:03
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 11 años, 9 meses
Puntos: 40
Respuesta: Como quitar espacios intermedios en SQL con replace

Hay un truco muy simple a este problema:
Código SQL:
Ver original
  1. CREATE TABLE #T(D VARCHAR(50));
  2.  
  3. INSERT
  4. INTO    #T
  5. VALUES  ('1 espacio'),
  6.     ('2  espacios'),
  7.     ('3   espacios'),
  8.     ('4    espacios'),
  9.     ('5     espacios');
  10.  
  11. SELECT * FROM #T;
  12.  
  13. UPDATE  #T
  14. SET     D=REPLACE(REPLACE(REPLACE(D,' ','<>'),'><',''),'<>',' ');
  15.  
  16. SELECT * FROM #T;
(si los caracteres '<' o '>' existen en la columna - cambialosen otros ccaracteres en el código ).
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog
  #4 (permalink)  
Antiguo 13/11/2013, 08:22
 
Fecha de Ingreso: abril-2007
Mensajes: 119
Antigüedad: 17 años
Puntos: 1
Respuesta: Como quitar espacios intermedios en SQL con replace

Probadísimo!!!!!!!!!! Muchas gracias por la solución. Excelente!!!!
  #5 (permalink)  
Antiguo 13/11/2013, 09:14
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Como quitar espacios intermedios en SQL con replace

Cita:
Iniciado por GeriReshef Ver Mensaje
Hay un truco muy simple a este problema:
Código SQL:
Ver original
  1. CREATE TABLE #T(D VARCHAR(50));
  2.  
  3. INSERT
  4. INTO    #T
  5. VALUES  ('1 espacio'),
  6.     ('2  espacios'),
  7.     ('3   espacios'),
  8.     ('4    espacios'),
  9.     ('5     espacios');
  10.  
  11. SELECT * FROM #T;
  12.  
  13. UPDATE  #T
  14. SET     D=REPLACE(REPLACE(REPLACE(D,' ','<>'),'><',''),'<>',' ');
  15.  
  16. SELECT * FROM #T;
(si los caracteres '<' o '>' existen en la columna - cambialosen otros ccaracteres en el código ).
Excelente aporte, podrias explicar que es lo que hace el codigo :P
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #6 (permalink)  
Antiguo 13/11/2013, 13:16
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 11 años, 9 meses
Puntos: 40
Respuesta: Como quitar espacios intermedios en SQL con replace

Los 3 "Replace" a partir del mas interno:

'5.....espacios' {cada espacio sera sustituido por <>}
'5<><><><><>espacios' {cada >< sera sustituido por cadena vacia}
'5<>espacios' {el <> que quedo sera sustituido por un espacio}
'5.espacios'
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog
  #7 (permalink)  
Antiguo 13/11/2013, 13:29
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Como quitar espacios intermedios en SQL con replace

:O orales esta muy bien tu codigo jejejeje
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: espacios, registro, replace, sql
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:22.