#json #postgresql
#json #postgresql
Вопрос:
create table json_example as
select '[{"a":1,"b":"foo"},{"a":"2","c":"bar"}]'::jsonb as value
select * from json_example
следующее работает нормально:
select * from json_array_elements('[{"a":1,"b":"foo"},{"a":"2","c":"bar"}]')
И я хочу сделать то же самое, с той лишь разницей, что json поступает из таблицы. как сделать то же самое, используя поле значения таблицы json_example?
Комментарии:
1. обновление: у меня есть данные jsonb
Ответ №1:
cross join
json_array_elements с таблицей
select j.* from json_example cross join
json_array_elements(value) as j
Комментарии:
1. Причина сбоя выполнения запроса: ошибка SQL [XX000]: ОШИБКА: не удалось найти функцию преобразования из неизвестного в json
2. @clairvoyant : Как я показал в демонстрации, вы должны преобразовать столбец в json, если вы используете
ctas
. По умолчанию он будет создан как неизвестный, даже если вы использовали допустимыйjson
3. да, как и эта его работа, проблема в том, что у меня есть существующая таблица, где значения — это jsonb. есть ли что-то подобное решение для этого?
4. @clairvoyant : Ты должен был сказать это. В этом случае вы можете использовать
jsonb_array_elements
5. выберите j.* из json_example перекрестное соединение jsonb_array_elements (значение) как j . все еще выдает ошибку: Причина: Ошибка SQL [22023]: ОШИБКА: не удается извлечь элементы из объекта