13 de agosto de 2009

Copiar tabla y quitar acentos de una tabla en Oracle

Como ya hice en el pasado, os paso un par de cosillas mas de sql que la verdad no dejan de ser una tontería pero que para mi son la mar de utiles para mis básicos conocimientos sql, y recordar que en el futuro los mejores programadores no serán los que mejor programen, si no los que encuentren antes la solución.



Copiar una tabla, es importante recordaros que todas las FK no serán copiadas de esta manera, así que tenerlo en cuenta:



create table tabla_copiada as (SELECT * FROM tabla _que_ copio);


Si luego quereis borrarla pues:


drop table tabla_copiada;



Quitar acentos de una tabla, aqui os propongo dos maneras de hacerlo, una sencillita y otra mucho mas compleja utilizando un cursor:


Sencillo:


UPDATE TABLA_CON_ACENTOS
SET NOMBRE= REPLACE(NOMBRE, 'á','a','é','e','í','i','ó','o','ú','u'),
APELLIDO1= REPLACE(APELLIDO1, 'á','a','é','e','í','i','ó','o','ú','u'),
APELLIDO2= REPLACE(APELLIDO2, 'á','a','é','e','í','i','ó','o','ú','u');



Complejo usando un cursor(no recomendada):


DECLARE
CURSOR USU IS SELECT NOMBRE, APELLIDO1, APELLIDO2 FROM TABLA_CON_ACENTOS;
REG_USU TABLA_CON_ACENTOS%ROWTYPE;
NOM_USU TABLA_CON_ACENTOS.NOMBRE%TYPE;
APE1_USU TABLA_CON_ACENTOS.APELLIDO1%TYPE;
APE2_USU TABLA_CON_ACENTOS.APELLIDO2%TYPE;
BEGIN
OPEN USU;
LOOP
FETCH USU INTO REG_USU;
EXIT WHEN REG_USU%NOTFOUND;
UPDATE TABLA_CON_ACENTOS REPLACE(REG_USU.NOMBRE, 'á', 'a', 'é','e', 'í','i','ó','o','ú','u') WHERE REG_USU.NIF=TABLA_CON_ACENTOS.NIF;
UPDATE TABLA_CON_ACENTOS REPLACE(REG_USU.APELLIDO1, 'á', 'a', 'é','e', 'í','i','ó','o','ú','u') WHERE REG_USU.NIF=TABLA_CON_ACENTOS.NIF;
UPDATE TABLA_CON_ACENTOS REPLACE(REG_USU.APELLIDO2, 'á', 'a', 'é','e', 'í','i','ó','o','ú','u') WHERE REG_USU.NIF=TABLA_CON_ACENTOS.NIF;
END LOOP;
CLOSE USU;
END;


Espero serviros de ayuda, yo por lo menos lo dejo aqui como "base de conocimiento"





No hay comentarios:

Publicar un comentario