You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL JSONB数组查询:如何获取值20?现有语句返回null

PostgreSQL JSONB获取数组对象中age值的正确查询方式

你当前的查询语句返回null,是因为PostgreSQL的->操作符不支持a.*.age这种通配符路径语法,->仅能识别单一键名或数组索引,无法遍历数组元素。

以下是几种正确的查询表达式:

  • 使用jsonb_path_query(PostgreSQL 12及以上版本支持),支持路径表达式遍历数组:
SELECT jsonb_path_query('{"a": [{"age":10}]}'::jsonb, '$.a[*].age');

该语句会返回数组中所有对象的age值,若数组包含多个对象,会返回多行结果。

  • 若确定数组仅有一个元素,可通过数组索引直接访问:
-- 返回jsonb类型的age值
SELECT ('{"a": [{"age":10}]}'::jsonb->'a'->0->'age');
-- 返回文本类型的age值
SELECT ('{"a": [{"age":10}]}'::jsonb->'a'->0->>'age');
  • 使用jsonb_array_elements展开数组后提取值:
SELECT elem->>'age' FROM jsonb_array_elements('{"a": [{"age":10}]}'::jsonb->'a') AS elem;

内容的提问来源于stack exchange,提问作者David542

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 20:15:29