Acá hay datos de prueba y la query que estoy usando:
Datos de prueba:
Código SQL:
Ver original
CREATE TABLE #datos (id INT PRIMARY KEY NOT NULL, direccion VARCHAR(250)) GO INSERT INTO #datos VALUES (1,'MANUEL MONTT 1200 DPTO 3') INSERT INTO #datos VALUES (2,'BALMACEDA 2355 LOC 102 B OF 25') INSERT INTO #datos VALUES (3,'B OHGGINS 980 LOC') INSERT INTO #datos VALUES (4,'LIB BDO OHIGGINS 3410 OF 48 LOC E') INSERT INTO #datos VALUES (5,'V KENNEDY 9001 LOC 4') INSERT INTO #datos VALUES (6,'VALLE AZAPA KM 36 PARC 5') GO CREATE TABLE #correcto (id INT PRIMARY KEY NOT NULL, nombre VARCHAR(250) NULL) GO INSERT INTO #correcto VALUES (1,'DEPARTAMENTO') INSERT INTO #correcto VALUES (2,'LOCAL') INSERT INTO #correcto VALUES (3,'OFICINA') INSERT INTO #correcto VALUES (4,'KILOMETRO') INSERT INTO #correcto VALUES (5,'PARCELA') GO CREATE TABLE #incorrecto (id INT PRIMARY KEY NOT NULL, nombre VARCHAR(250) NULL, id_correcto INT FOREIGN KEY REFERENCES #correcto(id) NOT NULL) GO INSERT INTO #incorrecto VALUES (1,'DPTO',1) INSERT INTO #incorrecto VALUES (2,'LOC',2) INSERT INTO #incorrecto VALUES (3,'OF',3) INSERT INTO #incorrecto VALUES (4,'KM',4) INSERT INTO #incorrecto VALUES (5,'PARC',5)
Y esta es la consulta que estoy utilizando para reemplazar las palabras:
Código SQL:
Ver original
SELECT REPLACE (#datos.direccion, #incorrecto.nombre, #correcto.nombre) FROM #correcto INNER JOIN #incorrecto ON #correcto.id = #incorrecto.id_correcto CROSS JOIN #datos 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!