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

Amazon Redshift中如何用SQL regex提取JSON字段的Material属性值

方案1:使用Redshift原生JSON函数(优先推荐)

你存储的attributes字段是标准JSON格式,用Redshift自带的JSON解析函数处理比正则更稳定,不受JSON键顺序、空格变化影响:

-- 仅返回存在Material属性的行
SELECT 
    JSON_EXTRACT_PATH_TEXT(elem, 'value') AS material_value
FROM 你的表名,
     UNNEST(JSON_PARSE(attributes)) AS elem
WHERE JSON_EXTRACT_PATH_TEXT(elem, 'name') = 'Material'

如果需要保留所有行,没有Material属性的行返回NULL,改用左连接写法:

SELECT 
    JSON_EXTRACT_PATH_TEXT(elem, 'value') AS material_value
FROM 你的表名
LEFT JOIN UNNEST(JSON_PARSE(attributes)) AS elem
    ON JSON_EXTRACT_PATH_TEXT(elem, 'name') = 'Material'
方案2:正则提取方案

如果必须用正则实现,可以用带捕获组的正则搭配Redshift REGEXP_SUBSTR的e参数提取目标值:

SELECT REGEXP_SUBSTR(attributes, '"name": "Material", "value": "([^"]+)"', 1, 1, 'e') AS material_value
FROM 你的表名

正则逻辑说明:

  • 先精准匹配"name": "Material", "value": "固定前缀
  • 捕获组([^"]+)匹配所有非双引号的字符,就是Material对应的value值
  • 最后的'e'参数指定返回第一个捕获组的内容,而非整段匹配的字符串

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 20:06:10