PostgreSQL中如何查询events表jsonb字段的指定键并返回结果?
PostgreSQL 提取JSONB字段指定键的查询方案
针对你给出的events表结构和需求,这里提供几种实用的PostgreSQL查询方法,都能实现返回仅包含指定键的data字段:
方法1:构造新JSONB对象(推荐多键场景)
使用jsonb_build_object函数,直接指定要保留的键并提取对应值,生成仅含目标键的新JSONB:
SELECT id, jsonb_build_object('b', data->'b') AS data FROM events WHERE id = 1;
如果需要保留多个键(比如同时保留a和b),只需要扩展函数参数:
jsonb_build_object('a', data->'a', 'b', data->'b')
方法2:移除不需要的键(推荐少键移除场景)
如果要保留的键数量多,仅需删除少数键,用-操作符直接移除不需要的键:
SELECT id, data - 'a' AS data FROM events WHERE id = 1;
要删除多个键的话,可传入数组形式:
data - ARRAY['a', 'c']
方法3:提取指定键的专用函数
使用jsonb_extract_path函数,直接提取指定键对应的JSONB片段:
SELECT id, jsonb_extract_path(data, 'b') AS data FROM events WHERE id = 1;
支持同时提取多个键,只需依次传入键名:
jsonb_extract_path(data, 'a', 'b')
以上三种方法执行后,都会得到你期望的结果:
id | data 1 | {"b": 2}
内容的提问来源于stack exchange,提问作者Conor
相关产品推荐
相关产品推荐

