У меня есть этот Json объект. Мне нужно вставить новый массив Json после ID = 1.
{
"Model": [
{
"ModelName": "Test Model",
"Object": [
{
"ID": 1,
"Name": "ABC",
"Task" : [
{
TaskID : 10,
Name: "TaskA"
},
{
TaskID : 11,
Name: "TaskB"
}
]
},
{
"ID": 3,
"Name": "XYZ",
"Task" : [
{
TaskID : 13,
Name: "TaskX"
},
{
TaskID : 14,
Name: "TaskY"
}
]
},
]
}]}
Мне нужно вставить этот массив Json после ID = 1
{
"ID": 2,
"Name": "PQR",
"Task" : []
}
Ожидаемый результат должен быть. Строка Json находится в таблице. Просто нужно обновить строку Json новым элементом. Как я могу написать запрос SQL для обновления строки Json новым элементом, используя значение индекса массива?
{
"Model": [
{
"ModelName": "Test Model",
"Object": [
{
"ID": 1,
"Name": "ABC",
"Task" : [
{
TaskID : 10,
Name: "TaskA"
},
{
TaskID : 11,
Name: "TaskB"
}
]
},
{
"ID": 2,
"Name": "PQR",
"Task" : []
},
{
"ID": 3,
"Name": "XYZ",
"Task" : [
{
TaskID : 13,
Name: "TaskX"
},
{
TaskID : 14,
Name: "TaskY"
}
]
},
]
}]}
Я пробовал выполнить следующий запрос. Но если я не укажу индекс, он будет вставлен последним. Если я укажу индекс, он не будет вставлен. Как указать индекс?
DECLARE @NewJsonString NVARCHAR(MAX)
SET @NewJsonString = '{"ID":2, "Name":"PQR", "Task":[]}'
UPDATE TableA
SET JsonData = JSON_MODIFY(JsonData, 'append $.Model[0].Object[1]', JSON_QUERY(@NewJsonString))
WHERE TID = 10