Несогласованный формат вывода запроса Postgres - PullRequest
4 голосов
/ 17 июня 2020

Я запрашиваю Postgres базу данных для 3 полей varchar (n), как показано ниже:

Select ("Title","Author","Isbn") from public."Book" Where 1=1

Результатом запроса является кортеж с 3 строками. Однако форматирование вывода между записями иногда бывает несовместимым. Обратите внимание на результат запроса:

enter image description here

Обратите внимание на разницу в первом элементе между строкой 40 и строкой 41/42. Первый элемент строки 40 - «Дорога революции» (заключен в двойные кавычки). Первый элемент строки 41 - это Neuromancer (не заключен в кавычки). То же самое происходит и в другом месте набора запросов.

Я не уверен, почему этот первый элемент иногда непоследователен в том, как он возвращается запросом. Это не проблема с отдельными записями. Что еще может быть не так?

1 Ответ

4 голосов
/ 17 июня 2020

Результат верный. В этом формате вывода Postgres используйте кавычки, если в строке есть пробелы или некоторые специальные символы:

postgres=# select row('ahoj', 'ahoj svete', 'ahoj,svete', '"ahoj svete"');
┌───────────────────────────────────────────────────┐
│                        row                        │
╞═══════════════════════════════════════════════════╡
│ (ahoj,"ahoj svete","ahoj,svete","""ahoj svete""") │
└───────────────────────────────────────────────────┘
(1 row)

Если вам не нужен выходной формат составного значения, не используйте конструктор row:

postgres=# select 'ahoj', 'ahoj svete', 'ahoj,svete', '"ahoj svete"';
┌──────────┬────────────┬────────────┬──────────────┐
│ ?column? │  ?column?  │  ?column?  │   ?column?   │
╞══════════╪════════════╪════════════╪══════════════╡
│ ahoj     │ ahoj svete │ ahoj,svete │ "ahoj svete" │
└──────────┴────────────┴────────────┴──────────────┘
(1 row)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...