Почему имя таблицы в двойных кавычках с завершающей опечаткой является допустимым синтаксисом - PullRequest
0 голосов
/ 07 ноября 2018

Я ввел следующий запрос в свой терминал Postgres, со случайным l после завершающей двойной кавычки и перед точкой с запятой. Я ожидал синтаксической ошибки, но вместо этого я получил результаты запроса:

select * from "myTable"l;

И на самом деле, я могу поставить все, что захочу, после завершающей двойной кавычки, и я до сих пор не получаю синтаксическую ошибку:

select * from "myTable"asdkjh;

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

Итак, почему это работает?

1 Ответ

0 голосов
/ 07 ноября 2018

l или asdkjh берется как псевдоним таблицы .

Ключевое слово AS для введения псевдонима является необязательным, поэтому вместо from foo as x вы также можете написать from foo x.

from foox однако, действительно, будет ошибкой, поскольку она будет принята за полное имя таблицы. Поскольку вы использовали заключенный в кавычки идентификатор, становится ясно, где заканчивается идентификатор и начинается следующий идентификатор - таким образом, не требуется никаких пробелов между идентификатором и псевдонимом.

Итак, from "myTable"asdkjh идентичен from "myTable" as asdkjh


Тем не менее, from "myTable""some_alias" будет ошибкой, так как он воспринимается как один идентификатор - чтобы включить двойную кавычку в кавычный идентификатор, вы пишете две кавычки, поэтому "myTable""some_alias" ссылается на таблицу с именем myTable"some_alias

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