Vinzenz Mai: DB Name muss davor, Hochkomma notwendig?

Beitrag lesen

Hallo,

Ich muss die Abfrage so ändern:

SELECT "LanguageID","LanguageDescription","TextID","CountryCode","ConfigName" FROM testdb.ir_language ORDER BY "LanguageID" ASC

Was mich aber wundert und vor Probleme stellt.
Muss man bei Postgres alle Spaltennamen in Hochkomma stellen?

a) die doppelten Anführungszeichen sind ganz normale ANSI QUOTES.
b) Möglicherweise hat Dein Migrationswerkzeug Deine Spaltennamen bei der
   Migration allesamt gequoted, so wie es zum Beispiel phpMyAdmin für MySQL
   macht.

Das hat aber weitreichende Konsequenzen:
PostgreSQL behandelt ungequotete Identifier case-insensitiv (und wandelt sie intern zu komplett kleingeschriebenen Namen um - SQL-Standard ist übrigens Großschreibung), gequotete Identifier behandelt PostgreSQL dagegen case-sensitiv und Du musst sie bei gemischter Groß-/Kleinschreibung anschließend immer quoten, siehe auch entsprechender Handbuchabschnitt (4.1.1 Identifiers and Key Words), ich zitiere den letzten Satz dieses Abschnitts:

<zitat>
    If you want to write portable applications you are advised to always
    quote a particular name or never quote it.
</zitat>

Das lernst Du derzeit auf die harte Tour. Hast Du Datums-/Zeitliterale oder Funktionen verwendet? Wenn ja, dann stelle Dich bitte auf die Prüfung der betroffenen Statements ein ...

(DBMS-) Plattformübergreifendes SQL ist eine Illusion.

Freundliche Grüße

Vinzenz