wake-up-neo.com

Werden bei PostgreSQL-Spaltennamen die Groß- und Kleinschreibung beachtet?

Ich habe eine DB-Tabelle mit der Aufschrift persons in Postgres, die von einem anderen Team mit der Aufschrift "first_Name". Jetzt versuche ich, PG Commander zu verwenden, um diese Tabelle nach diesem Spaltennamen abzufragen.

select * from persons where first_Name="xyz";

Und es kommt gerade zurück

FEHLER: Spalte "Vorname" existiert nicht

Nicht sicher, ob ich etwas Dummes mache oder gibt es eine Problemumgehung für dieses Problem, das mir fehlt?

127
5122014009

Alle Bezeichner (einschließlich Spaltennamen), die nicht in doppelte Anführungszeichen gesetzt sind, werden in PostgreSQL in Kleinbuchstaben umgewandelt. Spaltennamen, die mit doppelten Anführungszeichen erstellt wurden und dabei Großbuchstaben (und/oder andere Syntaxverstöße) beibehalten, müssen für den Rest ihres Lebens in doppelte Anführungszeichen gesetzt werden. Also, ja , bei PostgreSQL-Spaltennamen wird zwischen Groß- und Kleinschreibung unterschieden:

SELECT * FROM persons WHERE "first_Name" = 'xyz';

Korrigieren Sie auch die falschen Anführungszeichen um 'xyz'. Werte (Zeichenfolgenliterale) werden in einfache Anführungszeichen eingeschlossen.

Lesen Sie das Handbuch hier.

Mein ständiger Rat ist, ausschließlich legale Namen in Kleinbuchstaben zu verwenden, damit keine doppelten Anführungszeichen erforderlich sind.

229

Um die Dokumentation zu zitieren :

Bei Schlüsselwörtern und nicht zitierten Bezeichnern wird die Groß- und Kleinschreibung nicht berücksichtigt. Deshalb:

UPDATE MY_TABLE SET A = 5;

kann äquivalent geschrieben werden als:

uPDaTE my_TabLE SeT a = 5;

Sie können es auch mit Anführungszeichen schreiben:

UPDATE "my_table" SET "a" = 5;

Das Zitieren eines Bezeichners unterscheidet zwischen Groß- und Kleinschreibung, während nicht zitierte Namen immer in Kleinbuchstaben gefaltet werden (im Gegensatz zum SQL-Standard, bei dem nicht zitierte Namen in Großbuchstaben gefaltet werden). Zum Beispiel die Bezeichner FOO, foo und "foo" werden von PostgreSQL als gleich angesehen, aber "Foo" und "FOO" unterscheiden sich von diesen drei und voneinander.

Wenn Sie tragbare Anwendungen schreiben möchten, wird empfohlen, immer einen bestimmten Namen oder nie einen Namen anzugeben.

12
Eugene Yarmash

Die Spaltennamen, die Groß- oder Kleinschreibung enthalten, müssen in PostgresQL in doppelte Anführungszeichen gesetzt werden. Daher ist es die beste Konvention, alle Kleinbuchstaben mit einem Unterstrich zu versehen.

3
randomness