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

Postgres JSONB动态路径查询:提取各产品分类值

解决方案

假设你的表名为your_table,包含jsonb类型字段products,可以通过以下SQL语句提取每个产品的category值并生成你需要的格式:

生成每行字符串格式的结果

SELECT 
  format('"%s": %s', 
    key, 
    CASE 
      WHEN value->>'category' IS NOT NULL THEN format('"%s"', value->>'category')
      ELSE 'NULL'
    END
  ) AS product_category
FROM your_table,
     jsonb_each(products -> 'product');

语句说明:

  • jsonb_each(products -> 'product'):将products字段内的product对象拆分为键值对,key对应产品ID,value对应产品的详情对象。
  • value->>'category':从产品详情对象中提取category字段的值,若该字段不存在则返回NULL。
  • format函数:按照你需要的格式拼接字符串,对存在的category值添加双引号,不存在的则显示NULL。

生成JSON格式的结果(可选)

如果你需要将结果聚合为一个JSON对象而非每行字符串,可以使用jsonb_object_agg:

SELECT jsonb_object_agg(product_id, category) AS product_categories
FROM (
  SELECT 
    jsonb_object_keys(products->'product') AS product_id,
    (products->'product'->product_id)->>'category' AS category
  FROM your_table
) AS sub;

这个查询会返回一个JSON对象,结构与你期望的结果一致,适合直接用于程序处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 10:57:22