Función Replace de Oracle

Siempre que parece que está todo controlado, aparece algo que te hace tambalear.

Hicimos una carga masiva de datos en una tabla mediante la importación de un archivo.
Hasta ahí todo normal. El problema era que el único campo de la clave venía con algunas “/”.
En particular este caso el sistema está generado con GeneXus 9 y Visual Basic.
Ahora bien, no me pregunten por que, estuvimos algún tiempo intentando resolver el problema, pero en un workpanel que sería el “Trabajar con” nos aparecían los datos con “/”.
Pero a la hora de entrar en modo update en esa Trn, el sistema le quitaba la barra y solo nos aparecía el código sin barra y obviamente no encontraba el registro.
El atributo no tenía ninguna propiedad extraña, picture, ni nada que se le parezca.
Intentamos reproducir el problema con otra trn, creada con otros campos pero de las mismas características y nada.
Cuando los tests parecía llevar horas y no teníamos ese tiempo decidimos, sacarle la “/” al código (dejando para algún día ver el por que del problema).

Ahí comencé a inventar algo a ver que podía hacer para sacar esa barra, y la verdad, la solución tomó 2 minutos.

Usamos la función Replace de Oracle

replace( s1, s2, [ s3 ] )

s1 es el string que quiero buscar, en mi caso el campo
s2 es el string que quiero remplazar en mi caso “/”
s3 parámetro opcional cuando quiero sustituir uno por otro, yo podría haber querido sustituirlo por un “-” pero no era necesario.

Solución:

UPDATE mitabla SET micampo=REPLACE(micampo,’/’)

Me encontré con algunas sorpresas, de unique constraint violated, pero ahí es porque el usuario como no encontraba con “/” cadastró el mismo código en el sistema, pero sin “/”, entonces antes tuve que quitar las constraints, ver los registros duplicados y eliminar uno de ellos para luego aplicar las constraints nuevamente de primary key.

Si les llega a pasar tienen que hacer:

ALTER TABLE mitabla DROP CONSTRAINT nombre_constraint

ALTER TABLE mitabla ADD (
PRIMARY KEY (micampo)
USING INDEX
TABLESPACE USERS);

Fabricio De los Santos
Gerencia de Proyectos – Consultoría GeneXus –
ERP – Sistemas de Misión Crítica – Bases de Datos.

Vea mis blogs en:
www.fabriciodelossantos.com

Deja un comentario