Sql 使用JSON_MODIFY将多个对象追加到现有数组中

Sql 使用JSON_MODIFY将多个对象追加到现有数组中,sql,json,sql-server,tsql,Sql,Json,Sql Server,Tsql,问题在于将新JSON数组附加到现有JSON数组中: 假设我有以下JSON数组 [{“id”:1,“数据”:“一”},{“id”:2,“数据”:“两”}] 如何使用JSON\u MODIFY向其追加[{“id”:3,“data”:“Three”},{“id”:4,“data”:“Four”}] 更新列的结果值: [{“id”:1,“data”:“One”},{“id”:2,“data”:“Two”},{“id”:3,“data”:“Three”},{“id”:4,“data”:“Four”}]您可

问题在于将新JSON数组附加到现有JSON数组中:

假设我有以下JSON数组
[{“id”:1,“数据”:“一”},{“id”:2,“数据”:“两”}]

如何使用JSON\u MODIFY向其追加
[{“id”:3,“data”:“Three”},{“id”:4,“data”:“Four”}]

更新列的结果值:
[{“id”:1,“data”:“One”},{“id”:2,“data”:“Two”},{“id”:3,“data”:“Three”},{“id”:4,“data”:“Four”}]

您可以使用“JSON_MODIFY”函数和追加键来修改JSON对象,如下所示:

它适用于单个JSON数组:

它用于单个JSON哈希:


我不认为可以用一个
JSON\u MODIFY()
调用合并两个JSON数组,但是下面的语句(使用
JSON\u MODIFY()
)是一个可能的解决方案:

声明:

DECLARE @json NVARCHAR(500)='[{"id": 1, "data": "One"}, {"id": 2, "data": "Two"}]'
DECLARE @new NVARCHAR(500)='[{"id": 3, "data": "Three"}, {"id": 4, "data": "Four"}]'

SELECT @json = JSON_MODIFY(
   @json,
   'append $',
   JSON_QUERY([value])
)
FROM OPENJSON(@new)

SELECT @json
结果:

[{"id": 1, "data": "One"}, {"id": 2, "data": "Two"},{"id": 3, "data": "Three"},{"id": 4, "data": "Four"}]

我想一次附加整个数组,而不是单个对象。请检查更新的答案,可能会对您有所帮助。不,我想使用JSON_modify我们如何指定索引?需要向特定索引添加新的json字符串吗?请查看我在上一节提到的FIDLE内部,尝试使用“order by id asc/desc”
DECLARE @json NVARCHAR(500)='[{"id": 1, "data": "One"}, {"id": 2, "data": "Two"}]'
DECLARE @new NVARCHAR(500)='[{"id": 3, "data": "Three"}, {"id": 4, "data": "Four"}]'

SELECT @json = JSON_MODIFY(
   @json,
   'append $',
   JSON_QUERY([value])
)
FROM OPENJSON(@new)

SELECT @json
[{"id": 1, "data": "One"}, {"id": 2, "data": "Two"},{"id": 3, "data": "Three"},{"id": 4, "data": "Four"}]