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

如何在SQL表的嵌套JSON字段中批量修改键名:将Monthly return改为Weekly return

SQL修改JSON列中的键名解决方案

方法1:精准解析重构JSON(推荐)

针对SQL Server环境,通过逐层解析嵌套JSON结构,精准替换目标键名,避免误操作:

假设你的表名为your_table,且有唯一标识列用于定位数据,执行以下更新语句:

UPDATE your_table
SET tableJson = (
    SELECT 
        j.type,
        (
            SELECT 
                (
                    SELECT 
                        CASE WHEN [key] = 'Monthly return' THEN 'Weekly return' ELSE [key] END AS [key],
                        value
                    FROM OPENJSON(rows)
                    FOR JSON PATH, WITHOUT_ARRAY_WRAPPER
                ) AS rows
            FROM OPENJSON(j.content)
            WITH (rows NVARCHAR(MAX) AS JSON)
            FOR JSON PATH, WITHOUT_ARRAY_WRAPPER
        ) AS content
    FROM OPENJSON(tableJson)
    WITH (
        type NVARCHAR(50),
        content NVARCHAR(MAX) AS JSON
    ) j
    FOR JSON PATH
)
WHERE tableJson IS NOT NULL;

逻辑说明

  • 顶层解析:用OPENJSON(tableJson)提取外层JSON的type和嵌套的content字段(AS JSON保留content的JSON结构)。
  • 内层处理:解析content中的rows数组,遍历每个键值对,将"Monthly return"替换为"Weekly return"。
  • 重构JSON:逐层将处理后的键值对重新组合成完整的JSON字符串,更新回原列。

方法2:字符串替换(快速但需谨慎)

若能确保JSON中仅键名存在"Monthly return"(值或其他位置无该字符串),可使用简单替换快速完成:

UPDATE your_table
SET tableJson = REPLACE(tableJson, '"Monthly return"', '"Weekly return"')
WHERE tableJson LIKE '%"Monthly return"%';

注意事项

  • 此方法效率高但有风险,若JSON的其他部分包含目标字符串会被误替换,仅适用于结构明确的场景。

验证修改结果

执行更新后,可通过以下语句确认修改是否生效:

SELECT tableJson
FROM your_table
WHERE tableJson LIKE '%"Weekly return"%';

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 08:22:49