Опускание двойной кавычки для выполнения запроса на PostgreSQL - PullRequest
30 голосов
/ 13 июня 2011

Простой вопрос, есть ли способ опустить двойную кавычку в PostgreSQL?

Вот пример, дающий select * from A;, я получу ERROR: relation "a" does not exist, и мне нужно было бы дать select * from "A";, чтобы получить реальный результат.

Есть ли способ не делать второе, а вместо этого делать первое на PostgreSQL?

Ответы [ 5 ]

56 голосов
/ 13 июня 2011

Ваша проблема с этим запросом началась, когда вы создали свою таблицу.Когда вы создаете свою таблицу, не используйте кавычки.

Используйте это:

CREATE TABLE a ( ... );

Не это:

CREATE TABLE "A" ( ... );

Последнее сделает это так, что вывсегда придется процитировать это позже.Первое делает его обычным именем, и вы можете использовать SELECT * FROM a; или SELECT * FROM A;

Если вы не можете просто воссоздать свою таблицу, используйте синтаксис ALTER TABLE:

ALTER TABLE "A" RENAME TO a;
22 голосов
/ 13 июня 2011

двойные кавычки требуются, если вы включили заглавные буквы в название таблицы в postgres

чтобы избежать требований, назовите вашу таблицу "a"

15 голосов
/ 13 июня 2011

Postgresql имеет некоторое особое поведение в отношении цитирования и чувствительности к регистру: он сворачивает каждый не заключенный в кавычки идентификатор в нижний регистр (также во время создания) и затем работает с учетом регистра.

Двойные кавычки в идентификаторах необходимы только в том случае, если идентификатор (имя таблицы, имя столбца и т. Д.) Был определен (во время создания схемы) заглавными буквами (некоторыми или всеми) и между двойными кавычками.

В этом случае (против которого я советую), когда вы используете этот идентификатор, вы должны вводить его таким же образом: чувствительно к регистру (вводите прописные / строчные буквы точно так же, как это определено) и между двойными кавычками.

В других случаях вы можете использовать не заключенные в кавычки идентификаторы и работать всегда без учета регистра.

3 голосов
/ 21 января 2016

Не используйте заглавную букву в имени таблицы или имени столбца, если вы используете такую ​​вещь, postgres потребуется двойная кавычка для доступа к ней.

0 голосов
/ 14 апреля 2015

Пожалуйста, ознакомьтесь с подробным описанием происходящего здесь .

Имена таблиц сервера PostgreSQL чувствительны к регистру, но по умолчанию принудительно вводятся строчными: при вводе CREATE TABLE AAA, он станет CREATE TABLE aaa до выполнения запроса.

Имена, заключенные в двойные кавычки, сохраняют свой регистр таким, каким он был, поэтому после CREATE TABLE "AaA" вы получаете таблицу AaA и должны снова и снова писать ее в двойных кавычках.

Понятия не имеюпочему они так сделали:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...