My strucutre looks like this
Declare @layout NVARCHAR(MAX) = N' { "Sections": [ { "SectionName":"Section1", "SectionOrder":1, "Renders":[ { "RenderName":"Render1", "RenderOrder":1, "Fields":[ { "FieldName":"Field1", "FieldData":"Data1" }, { "FieldName":"Field2", "FieldData":"Data2" } ] }, { "RenderName":"Render2", "RenderOrder":2, "Fields":[ { "FieldName":"Field1", "FieldData":"Data1" }, { "FieldName":"Field2", "FieldData":"Data2" } ] } ] }, { "SectionName":"Section2", "SectionOrder":2, "Renders":[ { "RenderName":"Render1", "RenderOrder":1, "Fields":[ { "FieldName":"Field1", "FieldData":"Data1" } ] }, { "RenderName":"Render2", "RenderOrder":2, "Fields":[ { "FieldName":"Field1", "FieldData":"Data1" }, { "FieldName":"Field2", "FieldData":"Data2" } ] } ] } ] } '
I would like to do this:
update FieldData = 'DataUpdated' where FieldName = 'Field2' and RenderName = 'Render' and SectionName = 'Section1'
How do I do this using JSON_MODIFY?
I can GET the data using the following query: SELECT SectionName, SectionOrder, RenderName, RenderOrder, FieldName, FieldData FROM ( SELECT SectionName, SectionOrder, RenderName, RenderOrder, Fields FROM ( select SectionName, SectionOrder, Renders from OPENJSON(@layout,'$.Sections') WITH ( SectionName nvarchar(MAX) '$.SectionName', SectionOrder nvarchar(MAX) '$.SectionOrder', Renders nvarchar(MAX) '$.Renders' as JSON ) ) as Sections CROSS APPLY OPENJSON(Renders,'$') WITH ( RenderName nvarchar(MAX) '$.RenderName', RenderOrder nvarchar(MAX) '$.RenderOrder', Fields nvarchar(MAX) '$.Fields' as JSON ) ) as Renders CROSS APPLY OPENJSON(Fields,'$') WITH ( FieldName nvarchar(MAX) '$.FieldName', FieldData nvarchar(MAX) '$.FieldData' )