如何从 PostgreSQL 中的 JSONB 数组中获取特定对象的值?
Posted
技术标签:
【中文标题】如何从 PostgreSQL 中的 JSONB 数组中获取特定对象的值?【英文标题】:How to get specific objects value from JSONB array in PostgreSQL? 【发布时间】:2020-02-12 13:11:58 【问题描述】:我有一个名为 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】:您需要取消嵌套数组,然后过滤结果:
select adr.address ->> 'street'
from the_table t
cross join jsonb_array_elements(t.people -> 'addresses') as adr(address)
where adr.address ->> 'valid?' = 'true'
【讨论】:
以上是关于如何从 PostgreSQL 中的 JSONB 数组中获取特定对象的值?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Postgresql 中对 JSONB 数组中的值求和?
如何将 JSON 对象推送到 postgresql 中 jsonb 列中的数组