I have a column named people
and it’s type is JSONB.
Here is the sample data (1 row):
x
{"addresses": [{"street":"cubuklu", "valid?": "true"}
{"street":"beykoz", "valid?":"false"}
{"street":"kavacik", "valid?": "true"} ]}
I would like to get list of streets that have valid?
true value for all rows.
Result:
cubuklu
kavacik
data from other rows) (
I’m able to list of arrays could not filter values tho.
Advertisement
Answer
You need to unnest the array and then filter on the result:
select adr.address ->> 'street'
from the_table t
cross join jsonb_array_elements(t.people -> 'addresses') as adr(address)
where adr.address ->> 'valid?' = 'true'