在PostgreSQL中查询jsonb

时间:2019-06-23 13:32:03

标签: postgresql

我的postgresql数据库表中有一个称为authors的jsonb列,其数据如下:

[{"id":134,"nameKey":"smith, john"},
 {"id":112,"nameKey":"bats, billy"}]

如何从jsonb author列包含ID为112的作者的表中返回所有行?

我需要一些像

select * from record
where authors -> id = 2

我还需要命名:

select * from gardner_record
where authors -> nameKey like '%john%'

我发现几乎不可能理解postgresql jsonb文档。当我尝试通过ID选择时,提示我缺少演员表。当我尝试按名称选择时,它说该列不存在。

我应该如何查询此列?

1 个答案:

答案 0 :(得分:0)

使用jsonb_array_elements

select t.*
    from t cross join jsonb_array_elements(authors) as j
    where j->>'id' = '112'



select t.*
    from t cross join jsonb_array_elements(authors) as j
    where j->>'nameKey' like '%john%'

DEMO