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

SUPER类型中JSON数据的展开方法求助

解决方案:展开SUPER类型中的嵌套JSON数据

问题原因

你调用的JSON_EXTRACT_PATH_TEXT和JSON_EXTRACT_ARRAY_ELEMENT_TEXT是针对JSON/VARCHAR类型的函数,不支持SUPER类型,这就是报错的根本原因。SUPER类型有专属的语法和操作方式,无需依赖这些传统JSON函数。

核心操作方法

1. 提取单个字段(含嵌套字段)

使用箭头操作符->(保留SUPER类型)或->>(直接转成字符串)访问字段,支持多层嵌套:

  • 提取顶层字段:your_super_column->>'id'
  • 提取嵌套对象字段:your_super_column->'name'->>'en'

2. 展开嵌套数组

用UNNEST函数配合SUPER数组,将数组元素拆分为独立行。以你提供的数据结构为例,展开subItems数组的示例SQL如下(假设表名为order_items,SUPER字段为json_data):

SELECT
  -- 提取顶层字段
  json_data->>'id' AS order_item_id,
  json_data->>'productModelId' AS product_model_id,
  json_data->'name'->>'en' AS name_en,
  json_data->'name'->>'th' AS name_th,
  json_data->>'status' AS status,
  json_data->>'totalPrice' AS total_price,
  -- 展开subItems数组,提取子项字段
  sub_item->>'sku' AS sub_item_sku,
  sub_item->'name'->>'en' AS sub_item_name_en,
  sub_item->'name'->>'th' AS sub_item_name_th,
  sub_item->>'qty' AS sub_item_qty,
  sub_item->>'pricePerUnit' AS sub_item_price_per_unit,
  sub_item->>'vatTotal' AS sub_item_vat_total
FROM
  order_items,
  UNNEST(json_data->'subItems') AS t(sub_item)

3. 多层嵌套数组处理

如果存在更深层的嵌套数组(比如imageUrls下还有数组),可以继续嵌套UNNEST:

SELECT
  json_data->>'id' AS order_item_id,
  image_url AS item_image_url
FROM
  order_items,
  UNNEST(json_data->'imageUrls') AS t(image_url)

4. 访问数组指定元素

直接用索引访问数组元素(索引从0开始):

-- 获取imageUrls数组的第一个元素
SELECT json_data->'imageUrls'[0] AS first_image_url FROM order_items

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 00:28:22