Опущение двойной кавычки для выполнения запроса на PostgreSQL
простой вопрос, есть ли способ опустить двойную цитату в PostgreSQL?
вот пример, дав select * from A;
, Я получу ERROR: relation "a" does not exist
, а я select * from "A";
чтобы получить реальный результат.
есть ли способ не делать второй, а вместо этого делать первый на PostgreSQL?
5 ответов
ваша проблема с этим запросом началась, когда вы создали свою таблицу. При создании таблицы не используйте кавычки.
используйте этот:
CREATE TABLE a ( ... );
не так:
CREATE TABLE "A" ( ... );
последний сделает это так, что вам всегда придется цитировать его позже. Бывшая делает его нормальным именем и вы можете использовать SELECT * FROM a;
или SELECT * FROM A;
если вы не можете просто пересоздать таблицу, используйте ALTER TABLE
синтаксис:
ALTER TABLE "A" RENAME TO a;
двойные кавычки необходимы, если вы включаете заглавные буквы в свое имя таблицы в postgres
чтобы избежать требований, назовите таблицу "a"
Postgresql имеет некоторые конкретное поведение в отношении цитирования и чувствительности к регистру: он складывает каждый некотированный идентификатор в нижний регистр (также во время создания), а затем работает с учетом регистра.
двойные кавычки в идентификаторах необходимы только тогда, когда имя таблицы (или имя поля или что-то еще) было определено (во время создания схемы) :
- С прописными буквами (некоторые или все)
- с цитатами
в этом случае (против чего я советую), вы должны сделать следующее при обращении к нему в запросе:
- чувствительны к регистру (введите верхний / нижний регистр буквы точно так, как определено)
- цитаты
в другом случае, вы можете использовать идентификаторы в кавычках (за исключением, если они нужны, конечно) и работают всегда без учета регистра.
Не используйте букву верхнего регистра в имени таблицы или имени столбца, если вы используете такую вещь, то postgres потребует двойной кавычки для доступа к нему.
пожалуйста, смотрите подробное описание того, что происходит здесь.
имена таблиц сервера PostgreSQL чувствительны к регистру, но по умолчанию должны быть строчными: при вводе CREATE TABLE AAA
, Он стал CREATE TABLE aaa
перед выполнением запроса.
двойные кавычки имена держать их дело, как это было, так что после CREATE TABLE "AaA"
вы получили стол AaA
и должны писать его дважды цитируется снова и снова.
понятия не имею, почему они так поступают :)