Эквивалент jsonb_path_query_array в Postgresql-11

#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 именем таблицы.