Я получаю доступ к массиву (объект json под названием «choice_values») в поле jsonb
и хотел бы проанализировать его содержимое в текстовое поле, разделенное запятыми.Возвращает результат jsonb_array_elements как список, разделенный запятой
SELECT
jsonb_array_elements(doc -> 'form_values' -> '8189' -> 'choice_values')
FROM
field_data.exports;
Эта функция возвращает jsonb_array_elements «setof текст», который я хотел бы превращали в разделенных запятыми список значений массива, содержащегося в одном поле.
спасибо.
Да , и я должен был заметить, что в вопросе, извините. По какой-то причине функция string_agg видит результат jsonb_array_elements() как тип «jsonb», а не «setof text». Вот ошибка: «ErrorMessage: function string_agg (jsonb, text) не существует» – Joebocop
Я тоже что-то забыл в вашем вопросе. Вам нужно использовать 'jsonb_array_elements_text' ([добавлено в PG 9.4] (https://www.postgresql.org/docs/9.4/static/functions-json.html)), чтобы получить' setof text', а не 'jsonb' как выход. –
См. Другой вопрос, с которым я связался, если вам нужно использовать PG 9.3 по какой-либо причине; у него есть некоторые обходные пути. –