BoneFletcher
@BoneFletcher

Как реализовать map/array_walk на PostgreSQL?

Задача такая. Нужно такой JSON
[{"a": 1, "b": 2}, {"a": 10, "b": 20}]
превратить в такой
[1, 10]
Т.е. для каждого элемента массива вытащить значение с ключом "a".
На JS/PHP это можно сделать в одну строку, преобразованием элементов массива. Как это можно сделать на PostgreSQL?

Пока смог дойти до такого запроса
select jsonb_array_elements(my_column)->>'a'

Он возвращает набор нужных значений, но в виде нескольких строк. А нужно получить их в виде одного массива.
  • Вопрос задан
  • 64 просмотра
Решения вопроса 1
@galaxy
Ну соберите обратно в массив
select array_agg(v)
  from (select jsonb_array_elements(col)->'a' v
	  from (values ('[{"a": 1, "b": 2}, {"a": 10, "b": 20}]'::jsonb)) as t(col)
	) t1
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы