Como quitar caracter en el update

Expertos :
Su apoyo, el usuario por error ingreso un dígito de más (un cero) son 300 registros que deseo actualizar quitando un cero y debe quedar en 10 dígitos. No tengo idea como trabajarlo en el UPDATE Saludos
Dice : 13000339545
Debe Decir : 1300339545
mi select :
Select * from btlcadena.aux_control_soat
where num_formulario between '13000339545' and '13000339844'
and fch_recepcion_cdi >= ('09/10/2007')
and cod_local = 'CDI'
order by num_formulario

1 Respuesta

Respuesta
1
No te preocupes ya que la solución es 'trivial' y muy sencilla.
Por lo que veo la clave que quieres cambiar es alfanumérica (más fácil me lo pones aún) y encima tienes detectados todos los registros que fallan y quieres arreglar, haz lo siguiente :
- Abre una conexión a 'sqlplus' o a alguna herramienta que no te haga 'auto-commit' por seguridad.
Y ejecuta :
update btlcadena.aux_control_soat
set num_formulario = substr(num_formulario, 1, 3)||substr(num_formulario, 5, 11)
where where num_formulario between '13000339545' and '13000339844'
and fch_recepcion_cdi >= ('09/10/2007')
and cod_local = 'CDI'
order by num_formulario;
Una vez ejecutado te indicará 300 filas actualizadas.
- Ejecuta de nuevo la sentencia 'select' que tenias anteriormente y mira a ver si todo ha ido bien. Si 'SI', haz 'commit;',
Si NO haz 'rollback'.
- Si no ha ido bien (Te he eliminado el cuarto dígito es decir : '... 000...' por '... 00...'.
Puede que se trate de que tienes definidas Constraints de Foreign Key, es o que lo que quieres cambiar es de tipo NUMÉRICO.
Si es así, mandame de nuevo una respuesta y te indicaré como hacerlo.
Si es problema de que hay Constratints de FK (relación maestro - detalle) lo que tienes que hacer es más complejo :
a). O aprovechas un tiempo en que nadie trabaje y copias las constraints a eliminar momentáneamente y restauras los valores de forma similar a lo que te he indicado ... o ...
b). Tendrá que crear todos los registros 'detalle' asociados con la clave buena y los datos que tiene asociados de forma jerárquica descendiente (desde el detalle, al detalle del detalle ..., etc).
Y luelo eliminar los de los códigos malos de forma inversa.
Espero haberte ayudado y si falla por alguno de los motivos que te he indicado me mandas respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas