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

SQL Server如何向JSON对象追加数组?JSON_MODIFY使用问题

问题描述

我需要向现有JSON对象中追加数组,具体场景如下:
原始JSON对象:

{ "value1": "test" }

待追加的对应数组结构:

{ "array2": ["1", "2", "3"] }

预期输出结果:

{ "value1": "test", "array2": ["1", "2", "3"] }

我使用JSON_MODIFY尝试的两次操作均失败,具体如下:

尝试方案1

SELECT 
    JSON_MODIFY('{ "value1": "test" }',
                'append $.array2', 
                JSON_QUERY('[ "1", "2", "3" ]'))

-- 输出:{ "value1": "test", "array2": [["1", "2", "3"]] }
-- 最终输出了嵌套的双层数组,不符合要求

尝试方案2

SELECT 
    JSON_MODIFY('{ "value1": "test" }',
                'append $',
                JSON_QUERY('{"array2": [ "1", "2", "3" ]}'))

-- 输出:{ "value1": "test" }
-- 输出结果完全不包含待追加的数组内容

请问如何操作才能得到符合预期的结果?


解决方案

正确实现代码

不需要使用append关键字,直接指定新增属性的路径即可。这里用JSON_QUERY包裹数组内容是为了告知SQL Server该内容是合法JSON结构,不会被当做字符串转义处理:

SELECT 
    JSON_MODIFY('{ "value1": "test" }',
                '$.array2', 
                JSON_QUERY('[ "1", "2", "3" ]'))

执行后输出即为预期结果:

{ "value1": "test", "array2": ["1", "2", "3"] }

原操作错误原因

  • 方案1错误:append关键字的作用是向目标路径已存在的数组中追加单个元素,将完整数组作为元素追加到新建的array2数组中,自然产生了双层嵌套数组。
  • 方案2错误:append $的语义是向根路径的数组追加元素,但你的根节点是JSON对象而非数组,该操作不符合语法逻辑因此不生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 05:24:05