Выберите массив со всеми значениями определенного поля из массива объектов в Postgres - PullRequest
0 голосов
/ 14 января 2019

У меня есть столбец, который содержит массив объектов:

[{"name": "Sue", "job": "dev"}, {"name": "Bob", "job": "designer"}]

Я хотел бы выбрать этот столбец, но меня интересуют только значения поля 'job', поэтому я хотел бы получить массив, подобный этому:

["dev", "designer"]

Я подумал, что есть способ сделать это, используя операторы и функции JSON, но я не смог найти здесь ничего подходящего: https://www.postgresql.org/docs/10/functions-json.html. Я что-то пропускаю в этих документах? Есть ли другой способ сделать это?

1 Ответ

0 голосов
/ 14 января 2019

json_to_recordset и array_aggs должны решить вашу проблему:

select array_agg(job) 
  from myTable
  cross join lateral 
  json_to_recordset(myTable.myJsonColumn) as t(name text, job text);

Вот демоверсия SQLFiddle

Примечание: спасибо Тони за внимание к массиву. Я пропустил это.

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