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?
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 .
mon conseil permanent est d'utiliser des noms juridiques, minuscules exclusivement si double citation n'est pas nécessaire.
pour citer la documentation :
Les mots cléset 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
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.