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

Redshift SUPER类型无法提取驼峰键chainId值的解决求助

解决方案:Redshift SUPER类型驼峰键chainId提取问题

问题根源

Redshift处理SUPER字段的点符号访问时,会自动将标识符转为全小写。你的JSON键是驼峰式的chainId,直接用properties.chainId会尝试匹配全小写的chainid键,自然返回null;而非驼峰键因为大小写一致,所以能正常提取。

可行方案

方案1:方括号+精确键名直接访问(推荐)

无需序列化整个JSON,直接通过键名精准访问SUPER结构中的值,适配大型JSON:

SELECT chainId, properties['chainId']::BIGINT AS extracted_chainId
FROM your_table;

注意键名必须严格匹配驼峰格式('chainId'),大小写不能错。

方案2:PartiSQL键值对遍历提取

遍历SUPER对象的键值对,精准匹配目标键名,同样无需序列化大JSON:

SELECT 
    chainId,
    (SELECT CAST(value AS BIGINT)
     FROM properties AS p
     WHERE p.key = 'chainId') AS extracted_chainId
FROM your_table;

这种方式通过遍历对象的每个键值对,找到完全匹配chainId的键后提取值,彻底避免大小写转换问题。

方案3:JSON_EXTRACT_PATH_TEXT(备选,仅适用于可序列化的JSON)

如果你的JSON未超出Redshift序列化限制,可使用该函数,同样要严格匹配键名:

SELECT 
    chainId,
    JSON_EXTRACT_PATH_TEXT(JSON_SERIALIZE(properties), 'chainId')::BIGINT AS extracted_chainId
FROM your_table;

但此方法不适合无法序列化的超大JSON,优先选用前两种方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 20:48:22