Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/05/2014, 11:03
patriciodilet
 
Fecha de Ingreso: mayo-2014
Mensajes: 9
Antigüedad: 10 años
Puntos: 0
Cómo reemplazar más de 2 palabras en el mismo registro?

Hola! estoy intentando reemplazar 2 palabras que se extraen de una segunda tabla, todo con el comando REPLACE, pero solo logro reemplazar una palabra del registro, por ejemplo, tengo el registro "BALMACEDA 2355 LOC 102 B OF 25" y quiero reemplazar las palabras "LOC" y "OF" por "LOCAL" y "OFICINA", pero solo logro reemplazar la primera palabra, en este caso LOC por LOCAL.

Acá hay datos de prueba y la query que estoy usando:

Datos de prueba:
Código SQL:
Ver original
  1. CREATE TABLE #datos
  2.     (id INT PRIMARY KEY NOT NULL,
  3.      direccion VARCHAR(250))
  4. GO
  5. INSERT INTO #datos VALUES (1,'MANUEL MONTT 1200 DPTO 3')
  6. INSERT INTO #datos VALUES (2,'BALMACEDA 2355 LOC 102 B OF 25')
  7. INSERT INTO #datos VALUES (3,'B OHGGINS 980 LOC')
  8. INSERT INTO #datos VALUES (4,'LIB BDO OHIGGINS 3410 OF 48 LOC E')
  9. INSERT INTO #datos VALUES (5,'V KENNEDY 9001 LOC 4')
  10. INSERT INTO #datos VALUES (6,'VALLE AZAPA KM 36 PARC 5')
  11. GO
  12. CREATE TABLE #correcto
  13.    (id INT PRIMARY KEY NOT NULL,
  14.     nombre VARCHAR(250) NULL)
  15. GO
  16. INSERT INTO #correcto VALUES (1,'DEPARTAMENTO')
  17. INSERT INTO #correcto VALUES (2,'LOCAL')
  18. INSERT INTO #correcto VALUES (3,'OFICINA')
  19. INSERT INTO #correcto VALUES (4,'KILOMETRO')
  20. INSERT INTO #correcto VALUES (5,'PARCELA')
  21. GO
  22. CREATE TABLE #incorrecto
  23.    (id INT PRIMARY KEY NOT NULL,
  24.     nombre VARCHAR(250) NULL,
  25.     id_correcto INT FOREIGN KEY REFERENCES #correcto(id) NOT NULL)
  26.  
  27. GO
  28. INSERT INTO #incorrecto VALUES (1,'DPTO',1)
  29. INSERT INTO #incorrecto VALUES (2,'LOC',2)
  30. INSERT INTO #incorrecto VALUES (3,'OF',3)
  31. INSERT INTO #incorrecto VALUES (4,'KM',4)
  32. INSERT INTO #incorrecto VALUES (5,'PARC',5)

Y esta es la consulta que estoy utilizando para reemplazar las palabras:
Código SQL:
Ver original
  1. SELECT REPLACE (#datos.direccion, #incorrecto.nombre, #correcto.nombre)
  2. FROM  #correcto
  3.     INNER JOIN #incorrecto ON #correcto.id = #incorrecto.id_correcto
  4.     CROSS JOIN #datos  
  5.     WHERE direccion LIKE '% ' + #incorrecto.nombre + '%'

Como pueden ver, extraigo las palabras que quiero reemplazar de una tabla "incorrecto" y obtengo la palabra bien escrita de "correcto", para luego realizar el replace, pero solo logro reemplazar una palabra por registro.

Cómo puedo hacerlo para reemplazar más de una palabra por registro?

Muchas gracias!