Omettre le guillemet double pour faire une requête sur PostgreSQL

Question Simple, est - il possible d'omettre la double citation dans PostgreSQL?

Voici un exemple, en donnant select * from A;, je vais récupérer ERROR: relation "a" does not exist, et j'aurais à donner select * from "A"; pour obtenir le résultat réel.

Existe-t-il un moyen de ne pas faire le second et de faire le premier sur PostgreSQL?

23
demandé sur zfm 2011-06-13 18:05:30

5 réponses

Votre problème avec cette requête a commencé lorsque vous avez créé votre table. Lorsque vous créez votre table, n'utilisez pas de guillemets.

Utilisez ceci:

CREATE TABLE a ( ... );

Pas ceci:

CREATE TABLE "A" ( ... );

Ce dernier fera en sorte que vous devez toujours citer plus tard. L'ancien fait un nom normal et vous pouvez utiliser SELECT * FROM a; ou SELECT * FROM A;

Si vous ne pouvez pas simplement recréer votre table, utilisez la syntaxe ALTER TABLE:

ALTER TABLE "A" RENAME TO a;
41
répondu Steve Prentice 2011-06-13 16:26:34

Les guillemets doubles sont requis si vous incluez des lettres majuscules dans le nom de votre table dans postgres

Pour éviter les exigences nommez votre table " a "

14
répondu David Chan 2011-06-13 14:08:36

Postgresql a un comportement Particulier en ce qui concerne la citation et la sensibilité à la casse: il plie chaque identifiant Non cité en minuscules (également au moment de la création) et fonctionne ensuite de manière sensible à la casse.

Les guillemets doubles dans les identifiants ne sont nécessaires que lorsque le nom de la table (ou le nom du champ ou autre) a été défini (au moment de la création du schéma):

  • avec des lettres majuscules (tout ou partie)
  • avec des guillemets

Dans ce cas (que je déconseille), vous devez faire le suivant en y faisant référence dans une requête:

  • être sensible à la casse (type majuscules/minuscules exactement comme défini)
  • utiliser des guillemets

Dans les autres cas, vous pouvez utiliser des identifiants non cités (sauf s'ils en ont besoin, bien sûr) et travailler toujours de manière insensible à la casse.

9
répondu leonbloy 2017-05-23 11:47:30

N'utilisez pas de lettre majuscule dans votre nom de table ou son nom de colonne, si vous utilisez une telle chose, le Postgres sera nécessaire pour y accéder.

3
répondu Sandy 2016-01-21 11:51:34

, Veuillez voir la description détaillée de ce qui se passe ici.

Les noms de table du serveur PostgreSQL sont sensibles à la casse, mais doivent être minuscules par défaut: lorsque vous tapez CREATE TABLE AAA, Il deviendra CREATE TABLE aaa avant l'exécution de la requête.

Les noms entre guillemets doubles gardent leur cas tel quel, donc après CREATE TABLE "AaA" vous obtenez la table AaA et devez l'écrire entre guillemets doubles encore et encore.

N'ont aucune idée pourquoi l'ont-ils fait:)

0
répondu Karatheodory 2015-04-14 05:02:38