Heim > Backend-Entwicklung > PHP-Tutorial > Warum gibt meine Postgresql-Abfrage den Fehler „Spalte existiert nicht' zurück, obwohl die Spalte vorhanden ist?

Warum gibt meine Postgresql-Abfrage den Fehler „Spalte existiert nicht' zurück, obwohl die Spalte vorhanden ist?

Patricia Arquette
Freigeben: 2024-12-27 21:44:13
Original
803 Leute haben es durchsucht

Why Does My Postgresql Query Return a

Den Fehler „Spalte existiert nicht“ in Postgresql verstehen

Beim Versuch, eine scheinbar einfache Postgresql-Abfrage auszuführen, kann es zu einem Fehler kommen behauptet, dass die angegebene Spalte nicht existiert. Dies kann rätselhaft sein, insbesondere wenn bekannt ist, dass die betreffende Spalte in der Datenbank vorhanden ist.

Untersuchung des Problems

Eine typische Abfrage, die diesen Fehler auslöst, ähnelt der Folgendes:

SELECT * 
FROM employee 
WHERE "lName" LIKE "Smith"
Nach dem Login kopieren

Die Fehlermeldung weist jedoch darauf hin, dass die Spalte „Smith“ nicht existiert, was angesichts der tatsächlichen Spalte rätselhaft ist Name ist „lName“.

Ursache des Fehlers

Der Fehler beruht auf einem Missverständnis darüber, wie Postgresql doppelte Anführungszeichen („“) in einer SQL-Anweisung interpretiert. In Postgresql schließen doppelte Anführungszeichen Bezeichner in Anführungszeichen ein, die auf Datenbankobjekte wie Tabellennamen und Spaltennamen verweisen. In diesem Fall erstellen die doppelten Anführungszeichen um „Smith“ jedoch stattdessen eine Zeichenfolgenkonstante.

Korrigieren der Abfrage

Um das Problem zu beheben, sollte die Abfrage geändert werden um den Spaltennamen „lName“ korrekt in Anführungszeichen zu setzen:

SELECT * 
FROM employee 
WHERE "lName" LIKE 'Smith'
Nach dem Login kopieren

Hier werden einfache Anführungszeichen (') verwendet, um den Wert einzuschließen 'Smith' erstellt ein String-Literal zum Vergleich.

Zusätzliche Überlegungen

Neben dem Zitieren ist das fehlende Platzhalterzeichen im LIKE-Vergleich eine weitere potenzielle Quelle für Verwirrung. Normalerweise enthält eine LIKE-Operation ein Platzhalterzeichen (%), das mit einer beliebigen Anzahl von Zeichen übereinstimmt. In dieser Abfrage ist es möglicherweise sinnvoller, Folgendes zu verwenden:

SELECT * 
FROM employee 
WHERE "lName" LIKE 'Smith%'
Nach dem Login kopieren

Dadurch wird sichergestellt, dass Zeilen, in denen der Wert in der Spalte „lName“ mit „Smith“ beginnt, in die Ergebnismenge aufgenommen werden.

Das obige ist der detaillierte Inhalt vonWarum gibt meine Postgresql-Abfrage den Fehler „Spalte existiert nicht' zurück, obwohl die Spalte vorhanden ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage