Извлечь поля из столбца postgres jsonb

У меня есть таблица postgres со столбцом jsonb, который имеет следующее значение:

 id  |  messageStatus       |   payload
-----|----------------------|-------------
1    |    123               | {"commissionEvents":[{"id":1,"name1":"12","name2":15,"name4":"apple","name5":"fruit"},{"id":2,"name1":"22","name2":15,"name4":"sf","name5":"fdfjkd"}]}
2    |    124               | {"commissionEvents":[{"id":3,"name1":"32","name2":15,"name4":"sf","name5":"fdfjkd"},{"id":4,"name1":"42","name2":15,"name4":"apple","name5":"fruit"}]}
3    |    125               | {"commissionEvents":[{"id":5,"name1":"42","name2":15,"name4":"apple","name5":"fdfjkd"},{"id":6,"name1":"52","name2":15,"name4":"sf","name5":"fdfjkd"},{"id":7,"name1":"62","name2":15,"name4":"apple","name5":"fdfjkd"}]}

здесь столбец полезной нагрузки имеет тип данных jsonb, я хочу написать запрос postgres для получить имя1 из CommissionEvents, где имя4 = яблоко.

Итак, мой результат будет таким:

Извлечь поля из столбца postgres jsonb

Поскольку я был новичком в этом jsonb, может ли кто-нибудь предложить мне какое-то решение для него.

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
0
667
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам нужно удалить все элементы массива, затем вы можете применить к ним условие WHERE, чтобы отфильтровать элементы с нужным именем.

select t.id, x.o ->> 'name1'
from the_table t
  cross join lateral jsonb_array_elements(t.payload -> 'commissionEvents') as x(o)
where x.o ->> 'name4' = 'apple'

Онлайн-пример: https://rextester.com/XWHG26387

Он возвращает «Ни один оператор не соответствует заданному имени и типу (ам) аргумента. Возможно, вам потребуется добавить явное приведение типов. Состояние SQL: 42883 символ: 93» ошибка в символе «=»

kaviya .P 11.07.2019 11:32

Ах, не было ясно, что здесь задействован массив. Смотрите мое редактирование

a_horse_with_no_name 11.07.2019 11:36

Другие вопросы по теме