Einfache Postgresql-Anweisung – Spaltenname existiert nicht

Lesezeit: 1 Minute

Einfache Postgresql Anweisung Spaltenname existiert nicht
meenxo

Ich habe mir die Haare ausgerissen. Ich habe eine sehr einfache Postgre-Datenbank, eine bestimmte Tabelle hat eine Spalte namens lName (großes N). Jetzt weiß ich, dass ich mit postgre lName zitieren muss, da es ein großes N enthält.

Ich versuche, die Datenbank mit der folgenden Anweisung abzufragen:

SELECT * 
FROM employee 
WHERE "lName" LIKE "Smith"

Aber ich erhalte diesen Fehler:

Warnung: pg_query()
[function.pg-query]: Abfrage fehlgeschlagen: FEHLER: Spalte “Smith” existiert nicht in …..

Was ist hier das Problem? Warum heißt es in der Spalte “Smith”?

Ich würde vermuten:

 SELECT * FROM employee WHERE "lName" LIKE 'Smith'

(beachten Sie die unterschiedlichen Anführungszeichen; "foo" ist ein Bezeichner in Anführungszeichen; 'foo' ist ein String-Literal)

Außerdem ist in den meisten SQL-Dialekten a LIKE ohne Platzhalter entspricht =; Wollten Sie einen Platzhalter einfügen?

Weil "Smith" ein Bezeichner ist, und an dieser Position wird erwartet, dass ein Bezeichner eine Spalte ist. Was Sie wahrscheinlich gemeint haben, ist ein Zeichenfolgenliteral, das einfache Anführungszeichen verwendet: 'Smith'. Damit

SELECT * FROM employee WHERE "lName" LIKE 'Smith'

Sie möchten wahrscheinlich auch einen Platzhalter in der Zeichenfolge, nach der gesucht werden soll ('Smith%'?). LIKE Der Abgleich ist im Gegensatz zum typischen Abgleich mit regulären Ausdrücken am Anfang und am Ende einer Zeichenfolge verankert.

1002230cookie-checkEinfache Postgresql-Anweisung – Spaltenname existiert nicht

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy