返回按数组中的jsonb对象过滤的行

时间:2019-02-08 14:39:17

标签: sql postgresql where jsonb

我有一个名为houses的表,它有两列id和一个名为details的jsonb列。 details列具有以下结构:

[{ kind: "flat", price: 100 }, { kind: "circle", price: 10 }]

我想获取houses列中至少有一个对象的所有details,其中kindflat

这是我尝试过的:

select *
FROM houses
WHERE "details"->>'kind' = 'flat'

1 个答案:

答案 0 :(得分:1)

您可以使用jsonb_array_elements

select h.*  from houses h cross join lateral 
    jsonb_array_elements(details) as j
where j->>'kind' = 'flat'

Demo