Как получить указанное c значение объекта из массива JSONB в PostgreSQL? - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть столбец с именем people и его тип: JSONB .

Вот пример данных ( 1 строка ):

{"addresses": [{"street":"cubuklu", "valid?": "true"} 
               {"street":"beykoz", "valid?":"false"}
               {"street":"kavacik", "valid?": "true"} ]}

Я хотел бы получить список улиц, которые имеют valid? true значение для всех рядов .

Результат:

cubuklu
kavacik
......(data from other rows)

Я могу получить список массивов, которые не могут фильтровать значения.

1 Ответ

1 голос
/ 12 февраля 2020

Вам нужно удалить массив и затем отфильтровать результат:

select adr.address ->> 'street'
from the_table t
  cross join jsonb_array_elements(t.people -> 'addresses') as adr(address)
where adr.address ->> 'valid?' = 'true'
...