Какие критерии для определения «как обязательные или нет в запросе Postgresql? - PullRequest
3 голосов
/ 18 июня 2010

Я начинаю работать с Postgresql, я конвертировал MS SQL DB, но не могу понять, почему

SELECT * FROM MYTABLE

не работает

, а

SELECT * FROM "MYTABLE" does

Более того, с другой машины, подключаясь к той же БД, я могу запустить

SELECT * FROM MYTABLE --(without ")

Все тесты были выполнены с использованием клиента PGAdmin III для Windows. Postgresql установлен на сервере Linux.

Это вопрос новичка PG, надеюсь, вы поможете.

1 Ответ

4 голосов
/ 18 июня 2010

По умолчанию postgresql преобразует идентификаторы без кавычек в выражении SQL в строчные буквы;это не то же самое, что сопоставление без учета регистра.

Так что, если вы определили таблицу с именем «TABLE», то вам нужно обратиться к ней как «TABLE», поскольку просто TABLE будет интерпретироваться как"table".

Проще говоря, лучшая тактика - избегать использования идентификаторов в верхнем регистре в postgresql: каталоги и большинство примеров, которые я видел, используют слова в нижнем регистре, разделенные подчеркиванием (the_thing).Вы можете использовать идентификаторы смешанного регистра, но в этом случае у вас есть две альтернативы:

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

В них изложены мои рекомендации в порядке предпочтения: придерживайтесьстиль нижнего регистра, смешивать регистр и принимать свертывание, настаивать на смешанном регистре и обращаться с идентификаторами в кавычках везде.

PS не заставляйте меня называть таблицу таблицей.Я предполагаю, что это был просто (глупый) пример.Это также плохой пример, так как «select * from table» вызывает синтаксическую ошибку, поэтому очевидно, что это не тот оператор, который вы фактически пытаетесь выполнить.

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