sql >> Database teknologi >  >> RDS >> Oracle

ORACLE 12.2.01 udvælgelse af kolonner fra forskellige tabeller med lignende navne --> anvendt intern kolonne-id

Ifølge Oracle (DocId 2658003.1) sker dette, når tre betingelser er opfyldt:

  1. ANSI-tilmelding
  2. UNION / UNION ALLE
  3. den samme tabel vises mere end én gang i forespørgslen

Tilsyneladende bruges "QCSJ_C" internt, når Oracle transformerer ANSI-style joins.

EDIT:

Fandt et minimalt eksempel:

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

Det kan rettes ved enten at bruge ikke-ANSI join-syntaks:

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

Eller helst ved at bruge kolonnenavne i stedet for * :

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


  1. MySql scoping problem med korrelerede underforespørgsler

  2. Skifter kolonneværdier i MySQL

  3. Oracle10 og JDBC:hvordan får man CHAR til at ignorere efterfølgende mellemrum ved sammenligning?

  4. Skift decimalseparator i MySQL