Не удается отменить json в postgres

#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]: ОШИБКА: не удается извлечь элементы из объекта