J'ai une petite question idiote. J'ai installé un serveur DB PostgreSQL, mais lorsque je exécute une requête, il y a un problème d'identifiant de colonne sans guillemets. Je ne sais pas pourquoi les citations autour des identificateurs sont nécessaires. Ma requête: ma pratique de Oracle dB est de ne pas utiliser ". Donc, dans Oracle: P> ERROR: column vc.car_id does not exist
LINE 1: SELECT vc.CAR_ID
3 Réponses :
me semble que la table VC n'a pas de colonne nommée Les citations sont facultatives et vous pouvez généralement les sauter. p> car_id code>. Êtes-vous sûr que c'est là? Faire
\ d vel_car code> pour voir la structure de la table. P>
Lorsque vous créez vos tables en utilisant des guillemets doubles, les noms de colonne et de table deviennent sensibles à la casse. Donc Vous devez créer vos tables sans utiliser de guillemets doubles, puis les noms ne sont pas sensibles à la casse: Voir le manuel pour plus de détails: P>
http: // www. postgresql.org/docs/current/static/sql-syntax-lexical.html#sql-syntax-Identifiers P>
EDIT: "car_id" code> est un nom différent de
"car_id" code> p>
car_id code> est identique au
car_id code> (notez les devis manquants!) < / p>
Oracle se comporte em> de la même manière. La seule différence est que les noms Oracle stocke en majuscule et Postgres les stocke en minuscule. Mais le comportement lors de l'utilisation de citations est identique. p>
de Postgres Documentation forte> : p>
citant un identifiant le rend également sensible à la casse, alors que les noms non notés sont toujours pliés en minuscules. Par exemple, les identifiants FOO, FOO et "FOO" sont considérés comme identiques par PostgreSQL, mais "FOO" et "FOO" sont différents de ces trois et les uns des autres. (Le pliage des noms non notaus à minuscule dans PostgreSQL est incompatible avec la norme SQL, qui dit que les noms non notés doivent être pliés en majuscules. Ainsi, FOO devrait être équivalent à "FOO", pas "FOO" en fonction de la norme. Si Vous souhaitez écrire des applications portables que vous êtes conseillé de toujours citer un nom particulier ou de ne jamais le citer.) p> blockQuote>
Postgres a une manipulation particulière de noms de table et de champs concernant la sensibilité à la casse.
@YPERCUBE: Ce n'est pas "particulier", il suit la norme SQL (et se comporte comme Oracle, DB2, Firebird, H2, Derby, ...)
@veselej sur un côté Note: Quata = montant d'une ressource (espace disque, utilisation de la CPU, etc.) accordé à un utilisateur; Citation = citation, chaîne entre guillemets (', "), vous parlez donc vraiment de citations et non de quotas ici :-)
@a_horse_with_no_name: la documentation des Postgres n'est pas d'accord avec vous: "Le pliage de noms non notés à minuscule dans PostgreSQL est incompatible avec la norme SQL" i> b>
@YPERCUBE: C'est pourquoi j'ai dit se comporte B> la même chose. La résolution de nom avec et sans guillemets suit toujours la norme (pas de citations: cas-inessitif, citations: sensible à la casse)
@a_horse: Oui, à ce stade, oui. Tant que l'on ne mélange pas cité et des noms non notés, le comportement est identique, juste.