Oracle
 sql >> Base de données >  >> RDS >> Oracle

ORACLE 12.2.01 sélection de colonnes de différentes tables avec des noms similaires --> identifiant de colonne interne utilisé

Selon Oracle (DocId 2658003.1), cela se produit lorsque trois conditions sont remplies :

  1. Joindre ANSI
  2. UNION / UNION TOUS
  3. la même table apparaît plusieurs fois dans la requête

Apparemment, "QCSJ_C" est utilisé en interne lorsqu'Oracle transforme les jointures de style ANSI.

MODIFIER :

Trouvé un exemple minimal :

SELECT * FROM dual d1 JOIN dual d2 ON d1.dummy=d2.dummy
UNION
SELECT * FROM dual d1 JOIN dual d2 ON d1.dummy=d2.dummy;

QCSJ_C000000000300000 QCSJ_C000000000300001
X                     X

Il peut être corrigé soit en utilisant une syntaxe de jointure non-ANSI :

SELECT * FROM dual d1, dual d2 WHERE d1.dummy=d2.dummy
UNION
SELECT * FROM dual d1, dual d2 WHERE d1.dummy=d2.dummy;

DUMMY DUMMY_1
X     X

Ou, de préférence en utilisant des noms de colonne au lieu de * :

SELECT d1.dummy, d2.dummy FROM dual d1 JOIN dual d2 ON d1.dummy=d2.dummy
UNION
SELECT d1.dummy, d2.dummy FROM dual d1 JOIN dual d2 ON d1.dummy=d2.dummy;

DUMMY DUMMY_1
X     X