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

如何从OBJECT_CONSTRUCT生成对象提取键并转为非JSON格式单列展示

解决方案:将JSON数组格式的字段转为逗号分隔的大写字符串

原问题背景

你当前使用的SQL语句为:

SELECT ID, OBJECT_CONSTRUCT("name", NAME, "age", AGE, "city", CITY) AS ALL_ATTRIBUTES, OBJECT_KEYS(ALL_ATTRIBUTES) AS ALL_FIELDS FROM MY_TABLE

生成的表数据如下:

IDALL_ATTRIBUTESALL_FIELDS
1{"name" : "JESSICA"}{"name"}
2{"age":15,"name":"JOSH"}{"age", "name"}

需要将ALL_FIELDS列从JSON数组格式转为逗号分隔的大写字符串,期望结果:

IDALL_ATTRIBUTESALL_FIELDS
1{"name" : "JESSICA"}NAME
2{"age":15,"name":"JOSH"}AGE, NAME

修改后的SQL语句

可以通过ARRAY_TO_STRING将数组转为字符串,再用UPPER统一转为大写,优化后的SQL如下:

SELECT 
    ID,
    OBJECT_CONSTRUCT("name", NAME, "age", AGE, "city", CITY) AS ALL_ATTRIBUTES,
    UPPER(ARRAY_TO_STRING(OBJECT_KEYS(OBJECT_CONSTRUCT("name", NAME, "age", AGE, "city", CITY)), ', ')) AS ALL_FIELDS
FROM MY_TABLE

如果想避免重复调用OBJECT_CONSTRUCT,也可以用子查询简化:

SELECT 
    ID,
    ALL_ATTRIBUTES,
    UPPER(ARRAY_TO_STRING(OBJECT_KEYS(ALL_ATTRIBUTES), ', ')) AS ALL_FIELDS
FROM (
    SELECT 
        ID,
        OBJECT_CONSTRUCT("name", NAME, "age", AGE, "city", CITY) AS ALL_ATTRIBUTES
    FROM MY_TABLE
) AS subquery

逻辑说明

  • OBJECT_KEYS函数会提取JSON对象的键,返回一个字符串数组(如['name']或['age', 'name'])
  • ARRAY_TO_STRING将数组元素用, 作为分隔符拼接成单个字符串
  • UPPER函数将拼接后的字符串转为大写,匹配你期望的格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 19:23:09