#sql #postgresql #postgresql-11
Вопрос:
[
{
"name" : "A",
"key" : "KA"
},
{
"name" : "B",
"key" : "KB"
}
]
Дан столбец, содержащий вышеуказанные данные,
Я использую select jsonb_path_query_array(column, '$.key')
, чтобы получить результат [KA, KB]
Однако это не работает в Postgres-11. Есть ли какие-либо альтернативы для того же самого ?
Комментарии:
1. Да, и этот код работал, когда я пробовал его на месте. Однако, когда я попытался развернуть его на сервере моей компании, я обнаружил, что эта функция недоступна, так как в настоящее время моя компания использует версию 11.
2. Круто. Спасибо, приятель, оцени помощь 🙂
Ответ №1:
ДА. Это дает массив Postgres. Используйте jsonb_agg
вместо array_agg
, если вам нужен массив JSON.
select array_agg(j ->> 'key')
from jsonb_array_elements(column) t(j);
Обновить
select
(select array_agg(j ->> 'key') from jsonb_array_elements(column) t(j))
from the_table;
Комментарии:
1. Спасибо. Должен ли я заменить t именем таблицы.