Heim >Datenbank >MySQL-Tutorial >Warum schlägt meine SQL-Abfrage aufgrund der Groß-/Kleinschreibung mit der Meldung „Spalte ... existiert nicht' fehl?

Warum schlägt meine SQL-Abfrage aufgrund der Groß-/Kleinschreibung mit der Meldung „Spalte ... existiert nicht' fehl?

Barbara Streisand
Barbara StreisandOriginal
2025-01-13 06:08:42322Durchsuche

Why Does My SQL Query Fail with

PostgreSQL-Groß-/Kleinschreibung und SQL-Abfragefehler: „Spalte ... existiert nicht“

Das Ausführen von SQL-Joins kann manchmal zu dem frustrierenden Fehler „Spalte ‚Spaltenname‘ existiert nicht“ führen. Dies liegt häufig an einer Nichtübereinstimmung der Groß-/Kleinschreibung zwischen dem Spaltennamen in Ihrer Abfrage und dem tatsächlichen, Groß-/Kleinschreibung berücksichtigenden Namen, der im Datenbankschema definiert ist. PostgreSQL reagiert hierauf im Gegensatz zu einigen anderen Datenbanksystemen besonders empfindlich.

Das Problem:

Bedenken Sie diese fehlgeschlagene Abfrage:

<code class="language-sql">select sim.id as idsim, 
       num.id as idnum 
from main_sim sim 
  left join main_number num on (FK_Numbers_id=num.id);</code>

Die Fehlermeldung verweist auf die nicht vorhandene Spalte „FK_Numbers_id“ in der Tabelle main_sim.

Die Lösung:

Die Spalte existiert, aber die richtige Großschreibung ist entscheidend. Die Groß-/Kleinschreibung von PostgreSQL erfordert eine präzise Übereinstimmung. Die korrigierte Abfrage lautet:

<code class="language-sql">select sim.id as idsim, 
       num.id as idnum 
from main_sim sim 
  left join main_number num on ("FK_Numbers_id" = num.id);</code>

Warum das funktioniert:

Das Einschließen des Spaltennamens "FK_Numbers_id" in doppelte Anführungszeichen zwingt PostgreSQL dazu, ihn wörtlich zu behandeln, unabhängig von der Groß-/Kleinschreibung. Ohne die Anführungszeichen interpretiert PostgreSQL den Spaltennamen gemäß seinen Standard-Fallregeln, was zu dem Fehler führt. Durch die Verwendung von doppelten Anführungszeichen wird eine genaue Übereinstimmung mit der Definition des Datenbankschemas sichergestellt.

Das obige ist der detaillierte Inhalt vonWarum schlägt meine SQL-Abfrage aufgrund der Groß-/Kleinschreibung mit der Meldung „Spalte ... existiert nicht' fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn