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

ORA-00904 ved indsættelse/forespørgsel til data fra tabeller

Det ser ud til, at du har angivet kolonnenavnene under anførselstegn i din DDL.

Oracle betragter identifikatorer under anførselstegn som store og små bogstaver, så oprettelse af en tabel med et kolonnenavn som "body" eller "year" vil ikke løse brødtekst eller år i din forespørgsel, fordi når du udelader anførselstegnene, overvejer den varianten med store bogstaver.

Så når du har dette:

 create table driver_case (registration varchar2(60), 
                      make varchar2(60),
                      model varchar2(60),
                      gvw number,
                      "year" number, 
                      "body" varchar2(60));

og prøv derefter at gøre

select year, body from driver_case

derefter forsøger Oracle at finde kolonne "YEAR", "BODY" (husk, uden en identifikator uden anførselstegn bliver konverteret til store bogstaver), hvilket ikke er det samme som "year", "body" i din tabel.

Dine løsninger?

  • Nævn ikke kolonnenavne under anførselstegn i DDL
  • Hvis du ser bort fra ovenstående punkt, så skal du nævne kolonnenavnene under anførselstegn i alle dine DML-udsagn.

Jeg demonstrerer ovenstående punkt i denne SQL Fiddle



  1. Simulerer group_concat MySQL-funktion i Microsoft SQL Server 2005?

  2. java.sql.SQLException:Forkert strengværdi:'\xF0\x9F\x91\xBD\xF0\x9F...'

  3. Hvordan kan jeg se den specifikke værdi af sql_mode?

  4. MySQL:unikt felt skal være et indeks?