PostgreSQL JSONB查询:获取指定unit对应的quantity值
解决PostgreSQL JSONB数组过滤问题
你需要在查询的WHERE子句中添加数组元素的过滤条件,同时修正原查询里的字段引用错误(原语句中t.value->'storage'应为t.data->'storage',因为表的JSONB字段名为data)。
修改后的查询语句如下:
SELECT product_id, e -> 'quantity' as quant FROM Products t, jsonb_array_elements(t.data->'storage') e WHERE product_id = '00445' AND e ->>'unit' = 'one';
关键说明:
e ->>'unit'用于提取JSONB元素中unit字段的文本值(->>返回文本类型,能直接和字符串'one'做等值比较;若用->会返回JSONB类型,需额外处理)- 过滤条件
e ->>'unit' = 'one'会只保留数组中unit为"one"的元素 - 原查询中
(product_id) IN (('00445'))可简化为product_id = '00445',逻辑一致且更简洁
执行该查询后,将得到目标结果:
| product_id | quant |
|---|---|
| 00445 | 3 |
内容的提问来源于stack exchange,提问作者Kirill Sazonov
相关产品推荐
相关产品推荐

