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

Snowflake中如何删除嵌套JSON内的指定子对象?

解决Snowflake中删除JSON嵌套字段的问题

你用object_delete(json_data,'address:apt')没效果的原因是:Snowflake的OBJECT_DELETE函数仅支持删除顶层键,第二个参数不能用冒号/点分隔的嵌套路径——它会尝试寻找名为address:apt的顶层键,而原JSON里根本没有这个键,所以结果和原数据完全一致。

要删除嵌套的address.apt字段,有两种实用方法:

方法1:处理嵌套对象后替换回原JSON

先通过OBJECT_DELETE删掉address子对象里的apt键,再用OBJECT_INSERT覆盖原JSON中的address字段:

SELECT OBJECT_INSERT(
    json_data,
    'address',
    OBJECT_DELETE(json_data:address, 'apt'),
    TRUE -- 允许覆盖已存在的address键
) AS modified_json
FROM your_table;

方法2:直接构造新JSON对象

用OBJECT_CONSTRUCT重新生成JSON,主动排除不需要的apt字段:

SELECT OBJECT_CONSTRUCT(
    'id', json_data:id,
    'name', json_data:name,
    'address', OBJECT_CONSTRUCT(
        'add1', json_data:address:add1,
        'add2', json_data:address:add2,
        'city', json_data:address:city
    )
) AS modified_json
FROM your_table;

如果JSON结构复杂,方法1更灵活,不需要手动列举所有要保留的字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 09:05:06