Добавить несколько объектов в существующий массив, используя JSON_MODIFY - PullRequest
2 голосов
/ 18 февраля 2020

Проблема заключалась в добавлении нового массива JSON к существующему массиву JSON:

Предположим, у меня есть следующий JSON Массив [{"id": 1, "data": "One"}, {"id": 2, "data": "Two"}]

Как добавить [{"id": 3, "data": "Three"}, {"id": 4, "data": "Four"}] к нему, используя JSON_MODIFY?

результирующее значение для обновленного столбца: [{"id": 1, "data": "One"}, {"id": 2, "data": "Two"}, {"id": 3, "data": "Three"}, {"id": 4, "data": "Four"}]

Ответы [ 2 ]

0 голосов
/ 20 марта 2020

Я не думаю, что вы можете объединить два JSON массива с одним вызовом JSON_MODIFY(), но следующее утверждение (с использованием JSON_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"}]
0 голосов
/ 18 февраля 2020

Вы можете использовать функцию "JSON_MODIFY" и добавить клавишу для изменения объекта JSON, как показано ниже:

SQL -FIDDLE

Это для индивидуальный JSON массив:

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


SELECT t.id, t.[data]
FROM
(
    SELECT * FROM OPENJSON(@json1) WITH(id int,[data] NVARCHAR(MAX)) 
    UNION ALL
    SELECT * FROM OPENJSON(@json2) WITH(id int,[data] NVARCHAR(MAX))
) t
FOR JSON PATH;

Это для индивидуального JSON га sh:

DECLARE @info NVARCHAR(500)='[{"id": 1, "data": "One"}, {"id": 2, "data": "Two"}]';

PRINT @info;

SET @info = JSON_MODIFY(@info, 'append $', JSON_QUERY('{"id": 3, "data": "Three"}'))
SET @info = JSON_MODIFY(@info, 'append $', JSON_QUERY('{"id": 4, "data": "Four"}'))

PRINT @info;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...