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

PostgreSQL中如何替代->0等索引操作批量提取JSON数组值?

PostgreSQL批量提取JSON数组中的object值

要批量提取attributes字段里rule->requisite数组中每个元素的link->object值,不需要逐个修改索引,用jsonb_array_elements(若字段是json类型则用json_array_elements)展开数组即可,具体SQL如下:

简洁写法

SELECT elem->'link'->>'object' AS object
FROM mytable,
     jsonb_array_elements(attributes->'rule'->'requisite') AS elem;

用WITH子句的写法

WITH expanded_rules AS (
    SELECT jsonb_array_elements(attributes->'rule'->'requisite') AS elem
    FROM mytable
)
SELECT elem->'link'->>'object' AS object
FROM expanded_rules;

说明

  • jsonb_array_elements(attributes->'rule'->'requisite')会把JSON数组的每个元素拆分成单独的行
  • ->>操作符用于提取JSON字段的文本值,如果需要保留JSON类型,改用->即可
  • 语句中的, 等价于CROSS JOIN,会将原表每行与展开后的数组元素进行关联

执行后就能得到期望的结果:

object
------
a
b
c

内容的提问来源于stack exchange,提问作者Marc Le Bihan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 07:18:17