Les noms de colonnes PostgreSQL sont-ils sensibles à la casse?

j'ai une table db dire, persons en Postgres transmis par une autre équipe qui a un nom de colonne dire, "first_Name" . Maintenant j'essaye d'utiliser PG commander pour interroger cette table sur cette colonne-Nom.

select * from persons where first_Name="xyz";

Et elle retourne

erreur: colonne "first_Name" n'existe pas

pas sûr si je fais quelque chose de stupide ou est-ce qu'il y a une solution à ce problème que je manque?

95
demandé sur Erwin Brandstetter 2014-01-02 12:21:15

3 réponses

tous les identificateurs (y compris les noms de colonnes) qui ne sont pas cités en double sont pliés en minuscules dans PostgreSQL. Les noms de colonnes qui ont été créés avec des guillemets et qui ont ainsi conservé des lettres majuscules (et/ou d'autres violations de syntaxe) doivent être cités deux fois pour le reste de leur vie. Ainsi, yes , PostgreSQL les noms des colonnes sont sensibles à la casse:

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

fixer également les doubles guillemets incorrects autour de 'xyz' . Valeurs (string les littéraux) sont enfermés dans des apostrophes .

lire le manuel ici.

mon conseil permanent est d'utiliser des noms juridiques, minuscules exclusivement si double citation n'est pas nécessaire.

168
répondu Erwin Brandstetter 2015-06-30 14:02:20

pour citer la documentation :

Les mots clés

et les identificateurs non cités sont insensibles à la casse. Par conséquent:

UPDATE MY_TABLE SET A = 5;

peut également s'écrire comme:

uPDaTE my_TabLE SeT a = 5;

le fait de citer un identificateur le rend sensible à la casse, alors que les noms non cités sont toujours pliés en minuscules:

UPDATE "my_table" SET "a" = 5;  // equivalent to the above examples
10
répondu Eugene Yarmash 2015-04-27 15:37:38

les noms de colonne qui sont Cas mixte ou majuscule doit être double cité dans Postgres sql. Donc la meilleure convention sera de suivre tous les petits cas avec underscore.

2
répondu randomness 2015-04-28 03:45:46