json - 如何在 PostgreSQL 中查询 jsonb 列中的值?
问题描述
给定一jsonb
列pairs
,在单个记录中使用如下数据调用:
{ "foo": 1, "bar": 2 }
如何查询给定值是上述字段中的值之一的记录。
例如,查询 1 将匹配上述记录。
3 的查询不匹配。
PostgreSQL 9.5
解决方案
在 Postgres 9.5jsonb_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 函数和运算符。
推荐阅读
- spring-boot - 使用spring-boot 2在Junit中注入RabbitTemplate的问题
- javascript - 离散轴标签
- javascript - javascript中的XOR运算符与python中的XOR运算符不同
- rx-java - RxJava 将发出的值收集到数组
- sql - postgres 9.6 的合并和 case when 语句
- python - 嵌套的 tf.function 非常慢
- r - 固定长度向量的 R 包
- python - 生成具有连续值的变量
- tfs - 是否可以将 TFS 查询限制为前 100 个?
- c# - 为什么 .NET 不能检测具有长文件路径的目录?