2012-03-01 11 views
9

Estoy tratando de mostrar el RowID junto con todas las columnas de una declaración Select *.Mostrar RowID en Select * (all) Statement

Estoy usando Oracle con Toad para ejecutar la instrucción SQL.

Tengo dos tablas que debo comparar, pero no tengo ningún identificador único para usar al ordenar las dos tablas para comparar. Así que pensé que usar el RowID para ordenar las dos tablas para compararlas podría ayudar.

¿Hay alguna manera de agregar RowID a una declaración Select *? No puedo agregar todos los nombres de las columnas ya que hay más de 50 de ellos. Haré esto en varios conjuntos de tablas donde el número y el nombre de las columnas variarán.

Cualquier ayuda o ideas acerca de esto sería muy apreciada.

Gracias de antemano,

Marwan

+0

ROWIDTOCHAR se puede utilizar para mostrar un rowid. seleccione ROWIDTOCHAR (rowid) de

; –

+0

@ S.P. - ¿Hay una ventaja al usar 'ROWIDTOCHAR' cuando se muestra' ROWID'? –

+0

Ayuda porque lo convierte en un tipo VARCHAR2. Si desea hacer algo como esto, seleccione ROWID FROM WHERE ROWIDTOCHAR (ROWID) LIKE '% %'; –

Respuesta

24

Usted puede hacer algo como

SELECT rowid, a.* 
    FROM table_name a 

Pero no estoy seguro de que realmente va a ayudarle. Ordenar los datos en ROWID no va a ser particularmente útil ya que es solo una ubicación física en el disco. Es tan arbitrario como presentar los datos sin clasificar.

+0

Gracias. Probaré eso. Tenía la impresión de que 'ROWID' se genera en un orden secuencial. Gracias por aclararlo. –

+6

@Marwan - Definitivamente no se garantiza que sea secuencial. Para las tablas pequeñas que solo se cargan una vez y nunca se modifican, puede parecer secuencial, pero no se debe confiar en ellas. –

+0

Eso es bueno saberlo. Gracias por tomarse el tiempo para aclarar esto para mí.Trabajaré con tablas pequeñas, pero si se hacen más grandes, tendré que descubrir qué más puedo hacer si el 'ROWID' deja de funcionar para mí. Gracias de nuevo. –