如何在jsonb列中按条件筛选指定键值对(source=270)
PostgreSQL JSONB列筛选指定source值的键值对
假设你的表名为your_table,存储JSON数组的JSONB列名为your_jsonb_column,可以用以下两种方式实现需求:
方法1:展开数组后筛选
使用jsonb_array_elements将JSON数组拆分为单个对象,再筛选source值为270的条目:
SELECT elem FROM your_table, jsonb_array_elements(your_jsonb_column) AS elem WHERE (elem->'source')::integer = 270;
或者通过字符串比较(适用于数字格式的字符串值):
SELECT elem FROM your_table, jsonb_array_elements(your_jsonb_column) AS elem WHERE elem->>'source' = '270';
方法2:使用JSON路径查询
利用jsonb_path_query直接通过路径表达式筛选,语法更简洁:
SELECT jsonb_path_query(your_jsonb_column, '$[*] ? (@.source == 270)') AS result FROM your_table;
以上两种查询都会返回目标结果:{"source": 270, "target": 285}
内容的提问来源于stack exchange,提问作者Klaus
相关产品推荐
相关产品推荐

