如何在PostgreSQL中查询jsonb列中的值?

问题描述 投票:0回答:1

在单个记录中给名为jsonbpairs列提供诸如以下内容的数据:

{ "foo": 1, "bar": 2 }

如何查询给定值是以上字段中的之一的记录。

例如,查询1将匹配上面的记录。查询3不匹配。

PostgreSQL 9.5

postgresql postgresql-9.5
1个回答
0
投票

在Postgres 9.5中,在横向连接中使用功能jsonb_each_text()

with my_table(pairs) as (
values 
    ('{ "foo": 1, "bar": 2 }'::jsonb)
)

select t.*
from my_table t
cross join jsonb_each_text(pairs)
where value = '1';

升级到Postgres 12并使用json路径函数,例如:

select *
from my_table
where jsonb_path_exists(pairs, '$.* ? (@ == 1)')

请参见JSON Functions and Operators.

© www.soinside.com 2019 - 2024. All rights reserved.