Когда имена столбцов или таблиц Postgres нуждаются в кавычках, а когда нет? - PullRequest
0 голосов
/ 22 марта 2019

Давайте рассмотрим следующий запрос postgres:

SELECT * 
FROM "MY_TABLE"
WHERE "bool_var"=FALSE 
 AND "str_var"='something';

Запрос не отвечает должным образом, когда я удаляю кавычки около "str_var", но не когда я делаю то же самое около "bool_var".Зачем?Как правильно написать запрос в этом случае, без кавычек вокруг логического столбца и кавычек вокруг текстового столбца?Что-то еще?

Ответы [ 2 ]

1 голос
/ 22 марта 2019

Благодаря комментарию @ TimBiegeleisen, я смог определить проблему;Я использовал зарезервированное ключевое слово («пользователь») в качестве имени столбца.

Ссылка на зарезервированные ключевые слова в документе: https://www.postgresql.org/docs/current/sql-keywords-appendix.html.

Теперь я знаю не использовать кавычки для запроса имен столбцов, а избегать зарезервированных ключевых слов в качестве имен столбцов.

0 голосов
/ 22 марта 2019

PostgreSQL преобразует все имена (имена таблиц, имена столбцов и т. Д.) В нижний регистр, если вы не запретите это, заключив их в двойные кавычки в create table "My_Table_ABC" ( "My_Very_Upper_and_Lowercasy_Column" numeric,...). Если у вас есть такие имена, вы всегда должны заключать их в двойные кавычки и другие ссылки.

...