..:o5k4r.m4dr1d


Buscar registros duplicados en ORACLE

Posted in Oracle,Soluciones,Trabajo por o5k4r.m4dr1d en mayo 6, 2015
Tags: , , ,

Para buscar registros duplicados en una tabla de oracle, con la siguiente consulta podremos saber cuantos registros hay duplicados por cada columna:


SELECT COL_A_COMPROBAR, COUNT(COL_A_COMPROBAR) FROM NOMBRE_TABLA GROUP BY COL_A_COMPROBAR HAVING COUNT(COL_A_COMPROBAR) > 1

Tambien pueden añadir campos a la consulta para identificar mas los datos de las lineas duplicadas, solo basta con agregar las columnas separadas con una coma en el SELECT y luego respetar el orden en el group by (COL2, COL3, COL4):


SELECT COL_A_COMPROBAR, COUNT(COL_A_COMPROBAR), COL2, COL3, COL4 FROM NOMBRE_TABLA GROUP BY COL_A_COMPROBAR,COL2, COL3, COL4 HAVING COUNT(COL_A_COMPROBAR) > 1

En caso de que tengamos espacios en blanco, las anteriores consultas no muestran resultados por que el valor a comprobar de la columna COL_A_COMPROBAR en el having es distinto por lo que lo considera otro registro y no encuentra la duplicidad. Para encontrar registris duplicados con espacios podemos utilizar el comando LTRIM o RTRIM segun de que lado estén los espacios (izquierda o derecha).

Espacios a la izquierda:


SELECT Ltrim (COL_A_COMPROBAR), COUNT(COL_A_COMPROBAR) FROM NOMBRE_TABLA GROUP BY Ltrim (COL_A_COMPROBAR) HAVING COUNT (Ltrim(COL_A_COMPROBAR)) > 1

Espacios a la derecha:


SELECT Rtrim (COL_A_COMPROBAR), COUNT(COL_A_COMPROBAR) FROM NOMBRE_TABLA
GROUP BY Rtrim (COL_A_COMPROBAR) HAVING COUNT (Rtrim (COL_A_COMPROBAR)) > 1

Espero que les resulte útil.