如何对数组中的数组使用JSON_MODIFY
这是我的Json字符串:如何对数组中的数组使用JSON_MODIFY,json,sql-server,tsql,Json,Sql Server,Tsql,这是我的Json字符串: { "JobID":1005, "ItemID":2, "Prefix":"CC", "Version":1, "ItemTypeID":4, "ItemType":"Change Control", "StageID":3, "StageName":"Change Control Closure", "WorkflowID":1, "WorkflowName":"Change Control Workfl
{
"JobID":1005,
"ItemID":2,
"Prefix":"CC",
"Version":1,
"ItemTypeID":4,
"ItemType":"Change Control",
"StageID":3,
"StageName":"Change Control Closure",
"WorkflowID":1,
"WorkflowName":"Change Control Workflow",
"JobStatus":0,
"IsJobArchived":false,
"IsJobCanceled":false,
"IsJobOnHold":false,
"IsJobPhasedOut":false,
"RelationID":0,
"JobLastUpdatedBy":"G4Admin",
"JobStartDate":"2019-07-18T08:02:44.737718Z",
"JobLastUpdated":"2019-07-18T08:02:44.9857249Z",
"JobDueDate":"2019-07-23T08:02:44.8997205Z",
"JobEstimatedDate":"2019-07-23T08:02:44.8877188Z",
"JobCompletedDate":null,
"RevisionNumber":1,
"DocketNo":390,
"JobVariance":"0",
"Mappings":[
],
"Groups":[
12
],
"InactiveGroups":null,
"Attributes":[
{
"ID":22,
"Name":"WorkflowType",
"Value":"50",
"DataType":"Text",
"IsMaster":true,
"ItemData":true,
"IsUserGroup":false,
"GroupId":null,
"ValueString":"Change Control",
"InactiveValue":null,
"InactiveValueString":null
},
{
"ID":18,
"Name":"Reason for change",
"Value":"23",
"DataType":"Text",
"IsMaster":true,
"ItemData":true,
"IsUserGroup":false,
"GroupId":null,
"ValueString":"CMC change",
"InactiveValue":null,
"InactiveValueString":null
},
{
"ID":12,
"Name":"Market",
"Value":"12",
"DataType":"Text",
"IsMaster":true,
"ItemData":true,
"IsUserGroup":true,
"GroupId":null,
"ValueString":"Ireland",
"InactiveValue":null,
"InactiveValueString":null
},
{
"ID":14,
"Name":"Product Name",
"Value":"34",
"DataType":"Text",
"IsMaster":true,
"ItemData":true,
"IsUserGroup":false,
"GroupId":null,
"ValueString":"DROXIA",
"InactiveValue":null,
"InactiveValueString":null
},
{
"ID":13,
"Name":"CCDS Impacted?",
"Value":"15",
"DataType":"Text",
"IsMaster":true,
"ItemData":true,
"IsUserGroup":false,
"GroupId":null,
"ValueString":"No",
"InactiveValue":null,
"InactiveValueString":null
},
{
"ID":11,
"Name":"JobOwner",
"Value":"G4Admin",
"DataType":"Text",
"IsMaster":false,
"ItemData":true,
"IsUserGroup":false,
"GroupId":null,
"ValueString":"G4Admin",
"InactiveValue":null,
"InactiveValueString":null
},
{
"ID":50,
"Name":"PartNumber",
"Value":"CC-02-01",
"DataType":0,
"IsMaster":false,
"ItemData":false,
"IsUserGroup":false,
"GroupId":null,
"ValueString":"CC-02-01",
"InactiveValue":null,
"InactiveValueString":null
},
{
"ID":50,
"Name":"JobInitiator",
"Value":"G4Admin",
"DataType":0,
"IsMaster":false,
"ItemData":false,
"IsUserGroup":false,
"GroupId":null,
"ValueString":"G4Admin",
"InactiveValue":null,
"InactiveValueString":null
},
{
"ID":10,
"Name":"TaskLeft",
"Value":"3",
"DataType":0,
"IsMaster":false,
"ItemData":false,
"IsUserGroup":false,
"GroupId":null,
"ValueString":null,
"InactiveValue":null,
"InactiveValueString":null
},
{
"ID":4,
"Name":"ProofCycle",
"Value":"1",
"DataType":"Integer",
"IsMaster":false,
"ItemData":true,
"IsUserGroup":false,
"GroupId":null,
"ValueString":"1",
"InactiveValue":null,
"InactiveValueString":null
},
{
"ID":5,
"Name":"PassCycle",
"Value":"1",
"DataType":"Integer",
"IsMaster":false,
"ItemData":true,
"IsUserGroup":false,
"GroupId":null,
"ValueString":"1",
"InactiveValue":null,
"InactiveValueString":null
},
{
"ID":6,
"Name":"TotalPassCount",
"Value":"1",
"DataType":"Integer",
"IsMaster":false,
"ItemData":true,
"IsUserGroup":false,
"GroupId":null,
"ValueString":"1",
"InactiveValue":null,
"InactiveValueString":null
}
],
"LinkedParentJobs":[
],
"LinkedChildJobs":[
],
"FullText":null
}
我想更新属性中的数组
示例:我想更改attributes中的值,其中Name=ProofCycle
想用json\u Modify
函数动态更新json吗
我有一些查询要展平json,但是json\u Modify
无法更改数组中的值
DECLARE @KeyValue NVARCHAR(MAX) = '{"JobID":1005,"ItemID":2,"Prefix":"CC","Version":1,"ItemTypeID":4,"ItemType":"Change Control","StageID":3,"StageName":"Change Control Closure","WorkflowID":1,"WorkflowName":"Change Control Workflow","JobStatus":0,"IsJobArchived":false,"IsJobCanceled":false,"IsJobOnHold":false,"IsJobPhasedOut":false,"RelationID":0,"JobLastUpdatedBy":"G4Admin","JobStartDate":"2019-07-18T08:02:44.737718Z","JobLastUpdated":"2019-07-18T08:02:44.9857249Z","JobDueDate":"2019-07-23T08:02:44.8997205Z","JobEstimatedDate":"2019-07-23T08:02:44.8877188Z","JobCompletedDate":null,"RevisionNumber":1,"DocketNo":390,"JobVariance":"0","Mappings":[],"Groups":[12],"InactiveGroups":null,"Attributes":[{"ID":22,"Name":"WorkflowType","Value":"50","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"Change Control","InactiveValue":null,"InactiveValueString":null},{"ID":18,"Name":"Reason for change","Value":"23","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"CMC change","InactiveValue":null,"InactiveValueString":null},{"ID":12,"Name":"Market","Value":"12","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":true,"GroupId":null,"ValueString":"Ireland","InactiveValue":null,"InactiveValueString":null},{"ID":14,"Name":"Product Name","Value":"34","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"DROXIA","InactiveValue":null,"InactiveValueString":null},{"ID":13,"Name":"CCDS Impacted?","Value":"15","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"No","InactiveValue":null,"InactiveValueString":null},{"ID":11,"Name":"JobOwner","Value":"G4Admin","DataType":"Text","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"G4Admin","InactiveValue":null,"InactiveValueString":null},{"ID":50,"Name":"PartNumber","Value":"CC-02-01","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":"CC-02-01","InactiveValue":null,"InactiveValueString":null},{"ID":50,"Name":"JobInitiator","Value":"G4Admin","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":"G4Admin","InactiveValue":null,"InactiveValueString":null},{"ID":10,"Name":"TaskLeft","Value":"3","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":null,"InactiveValue":null,"InactiveValueString":null},{"ID":4,"Name":"ProofCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null},{"ID":5,"Name":"PassCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null},{"ID":6,"Name":"TotalPassCount","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null}],"LinkedParentJobs":[],"LinkedChildJobs":[],"FullText":null}'
SELECT
-- Change Value to 80 where Name = 'Passcycle'
JSON_MODIFY(@KeyValue, '$.Attributes', '80')
我得到一个空输出
有人能帮我解决这个问题吗?解释:
DECLARE @KeyValue NVARCHAR(MAX) = N'{"JobID":1005,"ItemID":2,"Prefix":"CC","Version":1,"ItemTypeID":4,"ItemType":"Change Control","StageID":3,"StageName":"Change Control Closure","WorkflowID":1,"WorkflowName":"Change Control Workflow","JobStatus":0,"IsJobArchived":false,"IsJobCanceled":false,"IsJobOnHold":false,"IsJobPhasedOut":false,"RelationID":0,"JobLastUpdatedBy":"G4Admin","JobStartDate":"2019-07-18T08:02:44.737718Z","JobLastUpdated":"2019-07-18T08:02:44.9857249Z","JobDueDate":"2019-07-23T08:02:44.8997205Z","JobEstimatedDate":"2019-07-23T08:02:44.8877188Z","JobCompletedDate":null,"RevisionNumber":1,"DocketNo":390,"JobVariance":"0","Mappings":[],"Groups":[12],"InactiveGroups":null,"Attributes":[{"ID":22,"Name":"WorkflowType","Value":"50","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"Change Control","InactiveValue":null,"InactiveValueString":null},{"ID":18,"Name":"Reason for change","Value":"23","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"CMC change","InactiveValue":null,"InactiveValueString":null},{"ID":12,"Name":"Market","Value":"12","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":true,"GroupId":null,"ValueString":"Ireland","InactiveValue":null,"InactiveValueString":null},{"ID":14,"Name":"Product Name","Value":"34","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"DROXIA","InactiveValue":null,"InactiveValueString":null},{"ID":13,"Name":"CCDS Impacted?","Value":"15","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"No","InactiveValue":null,"InactiveValueString":null},{"ID":11,"Name":"JobOwner","Value":"G4Admin","DataType":"Text","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"G4Admin","InactiveValue":null,"InactiveValueString":null},{"ID":50,"Name":"PartNumber","Value":"CC-02-01","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":"CC-02-01","InactiveValue":null,"InactiveValueString":null},{"ID":50,"Name":"JobInitiator","Value":"G4Admin","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":"G4Admin","InactiveValue":null,"InactiveValueString":null},{"ID":10,"Name":"TaskLeft","Value":"3","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":null,"InactiveValue":null,"InactiveValueString":null},{"ID":4,"Name":"ProofCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null},{"ID":5,"Name":"PassCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null},{"ID":6,"Name":"PassCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null}],"LinkedParentJobs":[],"LinkedChildJobs":[],"FullText":null}'
DECLARE @stm nvarchar(max) = N''
SELECT @stm = @stm + CONCAT(
'SELECT @KeyValue = JSON_MODIFY(@KeyValue, ''$.Attributes[',
[key],
'].Value'', ''80''); '
)
FROM OPENJSON(@keyValue, '$.Attributes')
WHERE JSON_VALUE([value], '$.Name') = N'PassCycle'
EXECUTE sp_executesql @stm, N'@KeyValue NVARCHAR(MAX) OUTPUT', @KeyValue OUTPUT
DECLARE @KeyValue NVARCHAR(MAX) = N'{"JobID":1005,"ItemID":2,"Prefix":"CC","Version":1,"ItemTypeID":4,"ItemType":"Change Control","StageID":3,"StageName":"Change Control Closure","WorkflowID":1,"WorkflowName":"Change Control Workflow","JobStatus":0,"IsJobArchived":false,"IsJobCanceled":false,"IsJobOnHold":false,"IsJobPhasedOut":false,"RelationID":0,"JobLastUpdatedBy":"G4Admin","JobStartDate":"2019-07-18T08:02:44.737718Z","JobLastUpdated":"2019-07-18T08:02:44.9857249Z","JobDueDate":"2019-07-23T08:02:44.8997205Z","JobEstimatedDate":"2019-07-23T08:02:44.8877188Z","JobCompletedDate":null,"RevisionNumber":1,"DocketNo":390,"JobVariance":"0","Mappings":[],"Groups":[12],"InactiveGroups":null,"Attributes":[{"ID":22,"Name":"WorkflowType","Value":"50","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"Change Control","InactiveValue":null,"InactiveValueString":null},{"ID":18,"Name":"Reason for change","Value":"23","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"CMC change","InactiveValue":null,"InactiveValueString":null},{"ID":12,"Name":"Market","Value":"12","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":true,"GroupId":null,"ValueString":"Ireland","InactiveValue":null,"InactiveValueString":null},{"ID":14,"Name":"Product Name","Value":"34","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"DROXIA","InactiveValue":null,"InactiveValueString":null},{"ID":13,"Name":"CCDS Impacted?","Value":"15","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"No","InactiveValue":null,"InactiveValueString":null},{"ID":11,"Name":"JobOwner","Value":"G4Admin","DataType":"Text","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"G4Admin","InactiveValue":null,"InactiveValueString":null},{"ID":50,"Name":"PartNumber","Value":"CC-02-01","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":"CC-02-01","InactiveValue":null,"InactiveValueString":null},{"ID":50,"Name":"JobInitiator","Value":"G4Admin","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":"G4Admin","InactiveValue":null,"InactiveValueString":null},{"ID":10,"Name":"TaskLeft","Value":"3","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":null,"InactiveValue":null,"InactiveValueString":null},{"ID":4,"Name":"ProofCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null},{"ID":5,"Name":"PassCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null},{"ID":6,"Name":"PassCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null}],"LinkedParentJobs":[],"LinkedChildJobs":[],"FullText":null}'
SELECT @KeyValue = JSON_MODIFY(@KeyValue, '$.Attributes[' + [key] + '].Value', '80')
FROM OPENJSON(@keyValue, '$.Attributes')
WHERE JSON_VALUE([value], '$.Name') = N'PassCycle'
您可以使用$.Attributes[x].Value
路径表达式访问和修改“Attributes”JSON
数组中的项目,其中x
是项目的索引。您需要将此路径表达式传递给。因此,这里一种可能的方法是生成并执行动态语句。但是,如果使用SQL Server 2017+,则可以提供一个变量作为此路径表达式的值
动态语句(SQL Server 2016+):
DECLARE @KeyValue NVARCHAR(MAX) = N'{"JobID":1005,"ItemID":2,"Prefix":"CC","Version":1,"ItemTypeID":4,"ItemType":"Change Control","StageID":3,"StageName":"Change Control Closure","WorkflowID":1,"WorkflowName":"Change Control Workflow","JobStatus":0,"IsJobArchived":false,"IsJobCanceled":false,"IsJobOnHold":false,"IsJobPhasedOut":false,"RelationID":0,"JobLastUpdatedBy":"G4Admin","JobStartDate":"2019-07-18T08:02:44.737718Z","JobLastUpdated":"2019-07-18T08:02:44.9857249Z","JobDueDate":"2019-07-23T08:02:44.8997205Z","JobEstimatedDate":"2019-07-23T08:02:44.8877188Z","JobCompletedDate":null,"RevisionNumber":1,"DocketNo":390,"JobVariance":"0","Mappings":[],"Groups":[12],"InactiveGroups":null,"Attributes":[{"ID":22,"Name":"WorkflowType","Value":"50","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"Change Control","InactiveValue":null,"InactiveValueString":null},{"ID":18,"Name":"Reason for change","Value":"23","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"CMC change","InactiveValue":null,"InactiveValueString":null},{"ID":12,"Name":"Market","Value":"12","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":true,"GroupId":null,"ValueString":"Ireland","InactiveValue":null,"InactiveValueString":null},{"ID":14,"Name":"Product Name","Value":"34","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"DROXIA","InactiveValue":null,"InactiveValueString":null},{"ID":13,"Name":"CCDS Impacted?","Value":"15","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"No","InactiveValue":null,"InactiveValueString":null},{"ID":11,"Name":"JobOwner","Value":"G4Admin","DataType":"Text","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"G4Admin","InactiveValue":null,"InactiveValueString":null},{"ID":50,"Name":"PartNumber","Value":"CC-02-01","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":"CC-02-01","InactiveValue":null,"InactiveValueString":null},{"ID":50,"Name":"JobInitiator","Value":"G4Admin","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":"G4Admin","InactiveValue":null,"InactiveValueString":null},{"ID":10,"Name":"TaskLeft","Value":"3","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":null,"InactiveValue":null,"InactiveValueString":null},{"ID":4,"Name":"ProofCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null},{"ID":5,"Name":"PassCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null},{"ID":6,"Name":"PassCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null}],"LinkedParentJobs":[],"LinkedChildJobs":[],"FullText":null}'
DECLARE @stm nvarchar(max) = N''
SELECT @stm = @stm + CONCAT(
'SELECT @KeyValue = JSON_MODIFY(@KeyValue, ''$.Attributes[',
[key],
'].Value'', ''80''); '
)
FROM OPENJSON(@keyValue, '$.Attributes')
WHERE JSON_VALUE([value], '$.Name') = N'PassCycle'
EXECUTE sp_executesql @stm, N'@KeyValue NVARCHAR(MAX) OUTPUT', @KeyValue OUTPUT
DECLARE @KeyValue NVARCHAR(MAX) = N'{"JobID":1005,"ItemID":2,"Prefix":"CC","Version":1,"ItemTypeID":4,"ItemType":"Change Control","StageID":3,"StageName":"Change Control Closure","WorkflowID":1,"WorkflowName":"Change Control Workflow","JobStatus":0,"IsJobArchived":false,"IsJobCanceled":false,"IsJobOnHold":false,"IsJobPhasedOut":false,"RelationID":0,"JobLastUpdatedBy":"G4Admin","JobStartDate":"2019-07-18T08:02:44.737718Z","JobLastUpdated":"2019-07-18T08:02:44.9857249Z","JobDueDate":"2019-07-23T08:02:44.8997205Z","JobEstimatedDate":"2019-07-23T08:02:44.8877188Z","JobCompletedDate":null,"RevisionNumber":1,"DocketNo":390,"JobVariance":"0","Mappings":[],"Groups":[12],"InactiveGroups":null,"Attributes":[{"ID":22,"Name":"WorkflowType","Value":"50","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"Change Control","InactiveValue":null,"InactiveValueString":null},{"ID":18,"Name":"Reason for change","Value":"23","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"CMC change","InactiveValue":null,"InactiveValueString":null},{"ID":12,"Name":"Market","Value":"12","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":true,"GroupId":null,"ValueString":"Ireland","InactiveValue":null,"InactiveValueString":null},{"ID":14,"Name":"Product Name","Value":"34","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"DROXIA","InactiveValue":null,"InactiveValueString":null},{"ID":13,"Name":"CCDS Impacted?","Value":"15","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"No","InactiveValue":null,"InactiveValueString":null},{"ID":11,"Name":"JobOwner","Value":"G4Admin","DataType":"Text","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"G4Admin","InactiveValue":null,"InactiveValueString":null},{"ID":50,"Name":"PartNumber","Value":"CC-02-01","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":"CC-02-01","InactiveValue":null,"InactiveValueString":null},{"ID":50,"Name":"JobInitiator","Value":"G4Admin","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":"G4Admin","InactiveValue":null,"InactiveValueString":null},{"ID":10,"Name":"TaskLeft","Value":"3","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":null,"InactiveValue":null,"InactiveValueString":null},{"ID":4,"Name":"ProofCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null},{"ID":5,"Name":"PassCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null},{"ID":6,"Name":"PassCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null}],"LinkedParentJobs":[],"LinkedChildJobs":[],"FullText":null}'
SELECT @KeyValue = JSON_MODIFY(@KeyValue, '$.Attributes[' + [key] + '].Value', '80')
FROM OPENJSON(@keyValue, '$.Attributes')
WHERE JSON_VALUE([value], '$.Name') = N'PassCycle'
使用变量作为路径
表达式(SQL Server 2017+):
DECLARE @KeyValue NVARCHAR(MAX) = N'{"JobID":1005,"ItemID":2,"Prefix":"CC","Version":1,"ItemTypeID":4,"ItemType":"Change Control","StageID":3,"StageName":"Change Control Closure","WorkflowID":1,"WorkflowName":"Change Control Workflow","JobStatus":0,"IsJobArchived":false,"IsJobCanceled":false,"IsJobOnHold":false,"IsJobPhasedOut":false,"RelationID":0,"JobLastUpdatedBy":"G4Admin","JobStartDate":"2019-07-18T08:02:44.737718Z","JobLastUpdated":"2019-07-18T08:02:44.9857249Z","JobDueDate":"2019-07-23T08:02:44.8997205Z","JobEstimatedDate":"2019-07-23T08:02:44.8877188Z","JobCompletedDate":null,"RevisionNumber":1,"DocketNo":390,"JobVariance":"0","Mappings":[],"Groups":[12],"InactiveGroups":null,"Attributes":[{"ID":22,"Name":"WorkflowType","Value":"50","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"Change Control","InactiveValue":null,"InactiveValueString":null},{"ID":18,"Name":"Reason for change","Value":"23","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"CMC change","InactiveValue":null,"InactiveValueString":null},{"ID":12,"Name":"Market","Value":"12","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":true,"GroupId":null,"ValueString":"Ireland","InactiveValue":null,"InactiveValueString":null},{"ID":14,"Name":"Product Name","Value":"34","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"DROXIA","InactiveValue":null,"InactiveValueString":null},{"ID":13,"Name":"CCDS Impacted?","Value":"15","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"No","InactiveValue":null,"InactiveValueString":null},{"ID":11,"Name":"JobOwner","Value":"G4Admin","DataType":"Text","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"G4Admin","InactiveValue":null,"InactiveValueString":null},{"ID":50,"Name":"PartNumber","Value":"CC-02-01","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":"CC-02-01","InactiveValue":null,"InactiveValueString":null},{"ID":50,"Name":"JobInitiator","Value":"G4Admin","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":"G4Admin","InactiveValue":null,"InactiveValueString":null},{"ID":10,"Name":"TaskLeft","Value":"3","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":null,"InactiveValue":null,"InactiveValueString":null},{"ID":4,"Name":"ProofCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null},{"ID":5,"Name":"PassCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null},{"ID":6,"Name":"PassCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null}],"LinkedParentJobs":[],"LinkedChildJobs":[],"FullText":null}'
DECLARE @stm nvarchar(max) = N''
SELECT @stm = @stm + CONCAT(
'SELECT @KeyValue = JSON_MODIFY(@KeyValue, ''$.Attributes[',
[key],
'].Value'', ''80''); '
)
FROM OPENJSON(@keyValue, '$.Attributes')
WHERE JSON_VALUE([value], '$.Name') = N'PassCycle'
EXECUTE sp_executesql @stm, N'@KeyValue NVARCHAR(MAX) OUTPUT', @KeyValue OUTPUT
DECLARE @KeyValue NVARCHAR(MAX) = N'{"JobID":1005,"ItemID":2,"Prefix":"CC","Version":1,"ItemTypeID":4,"ItemType":"Change Control","StageID":3,"StageName":"Change Control Closure","WorkflowID":1,"WorkflowName":"Change Control Workflow","JobStatus":0,"IsJobArchived":false,"IsJobCanceled":false,"IsJobOnHold":false,"IsJobPhasedOut":false,"RelationID":0,"JobLastUpdatedBy":"G4Admin","JobStartDate":"2019-07-18T08:02:44.737718Z","JobLastUpdated":"2019-07-18T08:02:44.9857249Z","JobDueDate":"2019-07-23T08:02:44.8997205Z","JobEstimatedDate":"2019-07-23T08:02:44.8877188Z","JobCompletedDate":null,"RevisionNumber":1,"DocketNo":390,"JobVariance":"0","Mappings":[],"Groups":[12],"InactiveGroups":null,"Attributes":[{"ID":22,"Name":"WorkflowType","Value":"50","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"Change Control","InactiveValue":null,"InactiveValueString":null},{"ID":18,"Name":"Reason for change","Value":"23","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"CMC change","InactiveValue":null,"InactiveValueString":null},{"ID":12,"Name":"Market","Value":"12","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":true,"GroupId":null,"ValueString":"Ireland","InactiveValue":null,"InactiveValueString":null},{"ID":14,"Name":"Product Name","Value":"34","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"DROXIA","InactiveValue":null,"InactiveValueString":null},{"ID":13,"Name":"CCDS Impacted?","Value":"15","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"No","InactiveValue":null,"InactiveValueString":null},{"ID":11,"Name":"JobOwner","Value":"G4Admin","DataType":"Text","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"G4Admin","InactiveValue":null,"InactiveValueString":null},{"ID":50,"Name":"PartNumber","Value":"CC-02-01","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":"CC-02-01","InactiveValue":null,"InactiveValueString":null},{"ID":50,"Name":"JobInitiator","Value":"G4Admin","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":"G4Admin","InactiveValue":null,"InactiveValueString":null},{"ID":10,"Name":"TaskLeft","Value":"3","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":null,"InactiveValue":null,"InactiveValueString":null},{"ID":4,"Name":"ProofCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null},{"ID":5,"Name":"PassCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null},{"ID":6,"Name":"PassCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null}],"LinkedParentJobs":[],"LinkedChildJobs":[],"FullText":null}'
SELECT @KeyValue = JSON_MODIFY(@KeyValue, '$.Attributes[' + [key] + '].Value', '80')
FROM OPENJSON(@keyValue, '$.Attributes')
WHERE JSON_VALUE([value], '$.Name') = N'PassCycle'
注意事项:
DECLARE @KeyValue NVARCHAR(MAX) = N'{"JobID":1005,"ItemID":2,"Prefix":"CC","Version":1,"ItemTypeID":4,"ItemType":"Change Control","StageID":3,"StageName":"Change Control Closure","WorkflowID":1,"WorkflowName":"Change Control Workflow","JobStatus":0,"IsJobArchived":false,"IsJobCanceled":false,"IsJobOnHold":false,"IsJobPhasedOut":false,"RelationID":0,"JobLastUpdatedBy":"G4Admin","JobStartDate":"2019-07-18T08:02:44.737718Z","JobLastUpdated":"2019-07-18T08:02:44.9857249Z","JobDueDate":"2019-07-23T08:02:44.8997205Z","JobEstimatedDate":"2019-07-23T08:02:44.8877188Z","JobCompletedDate":null,"RevisionNumber":1,"DocketNo":390,"JobVariance":"0","Mappings":[],"Groups":[12],"InactiveGroups":null,"Attributes":[{"ID":22,"Name":"WorkflowType","Value":"50","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"Change Control","InactiveValue":null,"InactiveValueString":null},{"ID":18,"Name":"Reason for change","Value":"23","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"CMC change","InactiveValue":null,"InactiveValueString":null},{"ID":12,"Name":"Market","Value":"12","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":true,"GroupId":null,"ValueString":"Ireland","InactiveValue":null,"InactiveValueString":null},{"ID":14,"Name":"Product Name","Value":"34","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"DROXIA","InactiveValue":null,"InactiveValueString":null},{"ID":13,"Name":"CCDS Impacted?","Value":"15","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"No","InactiveValue":null,"InactiveValueString":null},{"ID":11,"Name":"JobOwner","Value":"G4Admin","DataType":"Text","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"G4Admin","InactiveValue":null,"InactiveValueString":null},{"ID":50,"Name":"PartNumber","Value":"CC-02-01","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":"CC-02-01","InactiveValue":null,"InactiveValueString":null},{"ID":50,"Name":"JobInitiator","Value":"G4Admin","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":"G4Admin","InactiveValue":null,"InactiveValueString":null},{"ID":10,"Name":"TaskLeft","Value":"3","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":null,"InactiveValue":null,"InactiveValueString":null},{"ID":4,"Name":"ProofCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null},{"ID":5,"Name":"PassCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null},{"ID":6,"Name":"PassCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null}],"LinkedParentJobs":[],"LinkedChildJobs":[],"FullText":null}'
DECLARE @stm nvarchar(max) = N''
SELECT @stm = @stm + CONCAT(
'SELECT @KeyValue = JSON_MODIFY(@KeyValue, ''$.Attributes[',
[key],
'].Value'', ''80''); '
)
FROM OPENJSON(@keyValue, '$.Attributes')
WHERE JSON_VALUE([value], '$.Name') = N'PassCycle'
EXECUTE sp_executesql @stm, N'@KeyValue NVARCHAR(MAX) OUTPUT', @KeyValue OUTPUT
DECLARE @KeyValue NVARCHAR(MAX) = N'{"JobID":1005,"ItemID":2,"Prefix":"CC","Version":1,"ItemTypeID":4,"ItemType":"Change Control","StageID":3,"StageName":"Change Control Closure","WorkflowID":1,"WorkflowName":"Change Control Workflow","JobStatus":0,"IsJobArchived":false,"IsJobCanceled":false,"IsJobOnHold":false,"IsJobPhasedOut":false,"RelationID":0,"JobLastUpdatedBy":"G4Admin","JobStartDate":"2019-07-18T08:02:44.737718Z","JobLastUpdated":"2019-07-18T08:02:44.9857249Z","JobDueDate":"2019-07-23T08:02:44.8997205Z","JobEstimatedDate":"2019-07-23T08:02:44.8877188Z","JobCompletedDate":null,"RevisionNumber":1,"DocketNo":390,"JobVariance":"0","Mappings":[],"Groups":[12],"InactiveGroups":null,"Attributes":[{"ID":22,"Name":"WorkflowType","Value":"50","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"Change Control","InactiveValue":null,"InactiveValueString":null},{"ID":18,"Name":"Reason for change","Value":"23","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"CMC change","InactiveValue":null,"InactiveValueString":null},{"ID":12,"Name":"Market","Value":"12","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":true,"GroupId":null,"ValueString":"Ireland","InactiveValue":null,"InactiveValueString":null},{"ID":14,"Name":"Product Name","Value":"34","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"DROXIA","InactiveValue":null,"InactiveValueString":null},{"ID":13,"Name":"CCDS Impacted?","Value":"15","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"No","InactiveValue":null,"InactiveValueString":null},{"ID":11,"Name":"JobOwner","Value":"G4Admin","DataType":"Text","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"G4Admin","InactiveValue":null,"InactiveValueString":null},{"ID":50,"Name":"PartNumber","Value":"CC-02-01","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":"CC-02-01","InactiveValue":null,"InactiveValueString":null},{"ID":50,"Name":"JobInitiator","Value":"G4Admin","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":"G4Admin","InactiveValue":null,"InactiveValueString":null},{"ID":10,"Name":"TaskLeft","Value":"3","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":null,"InactiveValue":null,"InactiveValueString":null},{"ID":4,"Name":"ProofCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null},{"ID":5,"Name":"PassCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null},{"ID":6,"Name":"PassCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null}],"LinkedParentJobs":[],"LinkedChildJobs":[],"FullText":null}'
SELECT @KeyValue = JSON_MODIFY(@KeyValue, '$.Attributes[' + [key] + '].Value', '80')
FROM OPENJSON(@keyValue, '$.Attributes')
WHERE JSON_VALUE([value], '$.Name') = N'PassCycle'
这两个示例都将修改
JSON
数组中的所有项(而不仅仅是一项),其匹配条件为JSON\u值([VALUE],'$.Name')=N'PassCycle'
解释:
DECLARE @KeyValue NVARCHAR(MAX) = N'{"JobID":1005,"ItemID":2,"Prefix":"CC","Version":1,"ItemTypeID":4,"ItemType":"Change Control","StageID":3,"StageName":"Change Control Closure","WorkflowID":1,"WorkflowName":"Change Control Workflow","JobStatus":0,"IsJobArchived":false,"IsJobCanceled":false,"IsJobOnHold":false,"IsJobPhasedOut":false,"RelationID":0,"JobLastUpdatedBy":"G4Admin","JobStartDate":"2019-07-18T08:02:44.737718Z","JobLastUpdated":"2019-07-18T08:02:44.9857249Z","JobDueDate":"2019-07-23T08:02:44.8997205Z","JobEstimatedDate":"2019-07-23T08:02:44.8877188Z","JobCompletedDate":null,"RevisionNumber":1,"DocketNo":390,"JobVariance":"0","Mappings":[],"Groups":[12],"InactiveGroups":null,"Attributes":[{"ID":22,"Name":"WorkflowType","Value":"50","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"Change Control","InactiveValue":null,"InactiveValueString":null},{"ID":18,"Name":"Reason for change","Value":"23","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"CMC change","InactiveValue":null,"InactiveValueString":null},{"ID":12,"Name":"Market","Value":"12","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":true,"GroupId":null,"ValueString":"Ireland","InactiveValue":null,"InactiveValueString":null},{"ID":14,"Name":"Product Name","Value":"34","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"DROXIA","InactiveValue":null,"InactiveValueString":null},{"ID":13,"Name":"CCDS Impacted?","Value":"15","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"No","InactiveValue":null,"InactiveValueString":null},{"ID":11,"Name":"JobOwner","Value":"G4Admin","DataType":"Text","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"G4Admin","InactiveValue":null,"InactiveValueString":null},{"ID":50,"Name":"PartNumber","Value":"CC-02-01","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":"CC-02-01","InactiveValue":null,"InactiveValueString":null},{"ID":50,"Name":"JobInitiator","Value":"G4Admin","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":"G4Admin","InactiveValue":null,"InactiveValueString":null},{"ID":10,"Name":"TaskLeft","Value":"3","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":null,"InactiveValue":null,"InactiveValueString":null},{"ID":4,"Name":"ProofCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null},{"ID":5,"Name":"PassCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null},{"ID":6,"Name":"PassCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null}],"LinkedParentJobs":[],"LinkedChildJobs":[],"FullText":null}'
DECLARE @stm nvarchar(max) = N''
SELECT @stm = @stm + CONCAT(
'SELECT @KeyValue = JSON_MODIFY(@KeyValue, ''$.Attributes[',
[key],
'].Value'', ''80''); '
)
FROM OPENJSON(@keyValue, '$.Attributes')
WHERE JSON_VALUE([value], '$.Name') = N'PassCycle'
EXECUTE sp_executesql @stm, N'@KeyValue NVARCHAR(MAX) OUTPUT', @KeyValue OUTPUT
DECLARE @KeyValue NVARCHAR(MAX) = N'{"JobID":1005,"ItemID":2,"Prefix":"CC","Version":1,"ItemTypeID":4,"ItemType":"Change Control","StageID":3,"StageName":"Change Control Closure","WorkflowID":1,"WorkflowName":"Change Control Workflow","JobStatus":0,"IsJobArchived":false,"IsJobCanceled":false,"IsJobOnHold":false,"IsJobPhasedOut":false,"RelationID":0,"JobLastUpdatedBy":"G4Admin","JobStartDate":"2019-07-18T08:02:44.737718Z","JobLastUpdated":"2019-07-18T08:02:44.9857249Z","JobDueDate":"2019-07-23T08:02:44.8997205Z","JobEstimatedDate":"2019-07-23T08:02:44.8877188Z","JobCompletedDate":null,"RevisionNumber":1,"DocketNo":390,"JobVariance":"0","Mappings":[],"Groups":[12],"InactiveGroups":null,"Attributes":[{"ID":22,"Name":"WorkflowType","Value":"50","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"Change Control","InactiveValue":null,"InactiveValueString":null},{"ID":18,"Name":"Reason for change","Value":"23","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"CMC change","InactiveValue":null,"InactiveValueString":null},{"ID":12,"Name":"Market","Value":"12","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":true,"GroupId":null,"ValueString":"Ireland","InactiveValue":null,"InactiveValueString":null},{"ID":14,"Name":"Product Name","Value":"34","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"DROXIA","InactiveValue":null,"InactiveValueString":null},{"ID":13,"Name":"CCDS Impacted?","Value":"15","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"No","InactiveValue":null,"InactiveValueString":null},{"ID":11,"Name":"JobOwner","Value":"G4Admin","DataType":"Text","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"G4Admin","InactiveValue":null,"InactiveValueString":null},{"ID":50,"Name":"PartNumber","Value":"CC-02-01","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":"CC-02-01","InactiveValue":null,"InactiveValueString":null},{"ID":50,"Name":"JobInitiator","Value":"G4Admin","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":"G4Admin","InactiveValue":null,"InactiveValueString":null},{"ID":10,"Name":"TaskLeft","Value":"3","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":null,"InactiveValue":null,"InactiveValueString":null},{"ID":4,"Name":"ProofCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null},{"ID":5,"Name":"PassCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null},{"ID":6,"Name":"PassCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null}],"LinkedParentJobs":[],"LinkedChildJobs":[],"FullText":null}'
SELECT @KeyValue = JSON_MODIFY(@KeyValue, '$.Attributes[' + [key] + '].Value', '80')
FROM OPENJSON(@keyValue, '$.Attributes')
WHERE JSON_VALUE([value], '$.Name') = N'PassCycle'
您可以使用$.Attributes[x].Value
路径表达式访问和修改“Attributes”JSON
数组中的项目,其中x
是项目的索引。您需要将此路径表达式传递给。因此,这里一种可能的方法是生成并执行动态语句。但是,如果使用SQL Server 2017+,则可以提供一个变量作为此路径表达式的值
动态语句(SQL Server 2016+):
DECLARE @KeyValue NVARCHAR(MAX) = N'{"JobID":1005,"ItemID":2,"Prefix":"CC","Version":1,"ItemTypeID":4,"ItemType":"Change Control","StageID":3,"StageName":"Change Control Closure","WorkflowID":1,"WorkflowName":"Change Control Workflow","JobStatus":0,"IsJobArchived":false,"IsJobCanceled":false,"IsJobOnHold":false,"IsJobPhasedOut":false,"RelationID":0,"JobLastUpdatedBy":"G4Admin","JobStartDate":"2019-07-18T08:02:44.737718Z","JobLastUpdated":"2019-07-18T08:02:44.9857249Z","JobDueDate":"2019-07-23T08:02:44.8997205Z","JobEstimatedDate":"2019-07-23T08:02:44.8877188Z","JobCompletedDate":null,"RevisionNumber":1,"DocketNo":390,"JobVariance":"0","Mappings":[],"Groups":[12],"InactiveGroups":null,"Attributes":[{"ID":22,"Name":"WorkflowType","Value":"50","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"Change Control","InactiveValue":null,"InactiveValueString":null},{"ID":18,"Name":"Reason for change","Value":"23","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"CMC change","InactiveValue":null,"InactiveValueString":null},{"ID":12,"Name":"Market","Value":"12","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":true,"GroupId":null,"ValueString":"Ireland","InactiveValue":null,"InactiveValueString":null},{"ID":14,"Name":"Product Name","Value":"34","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"DROXIA","InactiveValue":null,"InactiveValueString":null},{"ID":13,"Name":"CCDS Impacted?","Value":"15","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"No","InactiveValue":null,"InactiveValueString":null},{"ID":11,"Name":"JobOwner","Value":"G4Admin","DataType":"Text","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"G4Admin","InactiveValue":null,"InactiveValueString":null},{"ID":50,"Name":"PartNumber","Value":"CC-02-01","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":"CC-02-01","InactiveValue":null,"InactiveValueString":null},{"ID":50,"Name":"JobInitiator","Value":"G4Admin","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":"G4Admin","InactiveValue":null,"InactiveValueString":null},{"ID":10,"Name":"TaskLeft","Value":"3","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":null,"InactiveValue":null,"InactiveValueString":null},{"ID":4,"Name":"ProofCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null},{"ID":5,"Name":"PassCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null},{"ID":6,"Name":"PassCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null}],"LinkedParentJobs":[],"LinkedChildJobs":[],"FullText":null}'
DECLARE @stm nvarchar(max) = N''
SELECT @stm = @stm + CONCAT(
'SELECT @KeyValue = JSON_MODIFY(@KeyValue, ''$.Attributes[',
[key],
'].Value'', ''80''); '
)
FROM OPENJSON(@keyValue, '$.Attributes')
WHERE JSON_VALUE([value], '$.Name') = N'PassCycle'
EXECUTE sp_executesql @stm, N'@KeyValue NVARCHAR(MAX) OUTPUT', @KeyValue OUTPUT
DECLARE @KeyValue NVARCHAR(MAX) = N'{"JobID":1005,"ItemID":2,"Prefix":"CC","Version":1,"ItemTypeID":4,"ItemType":"Change Control","StageID":3,"StageName":"Change Control Closure","WorkflowID":1,"WorkflowName":"Change Control Workflow","JobStatus":0,"IsJobArchived":false,"IsJobCanceled":false,"IsJobOnHold":false,"IsJobPhasedOut":false,"RelationID":0,"JobLastUpdatedBy":"G4Admin","JobStartDate":"2019-07-18T08:02:44.737718Z","JobLastUpdated":"2019-07-18T08:02:44.9857249Z","JobDueDate":"2019-07-23T08:02:44.8997205Z","JobEstimatedDate":"2019-07-23T08:02:44.8877188Z","JobCompletedDate":null,"RevisionNumber":1,"DocketNo":390,"JobVariance":"0","Mappings":[],"Groups":[12],"InactiveGroups":null,"Attributes":[{"ID":22,"Name":"WorkflowType","Value":"50","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"Change Control","InactiveValue":null,"InactiveValueString":null},{"ID":18,"Name":"Reason for change","Value":"23","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"CMC change","InactiveValue":null,"InactiveValueString":null},{"ID":12,"Name":"Market","Value":"12","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":true,"GroupId":null,"ValueString":"Ireland","InactiveValue":null,"InactiveValueString":null},{"ID":14,"Name":"Product Name","Value":"34","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"DROXIA","InactiveValue":null,"InactiveValueString":null},{"ID":13,"Name":"CCDS Impacted?","Value":"15","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"No","InactiveValue":null,"InactiveValueString":null},{"ID":11,"Name":"JobOwner","Value":"G4Admin","DataType":"Text","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"G4Admin","InactiveValue":null,"InactiveValueString":null},{"ID":50,"Name":"PartNumber","Value":"CC-02-01","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":"CC-02-01","InactiveValue":null,"InactiveValueString":null},{"ID":50,"Name":"JobInitiator","Value":"G4Admin","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":"G4Admin","InactiveValue":null,"InactiveValueString":null},{"ID":10,"Name":"TaskLeft","Value":"3","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":null,"InactiveValue":null,"InactiveValueString":null},{"ID":4,"Name":"ProofCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null},{"ID":5,"Name":"PassCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null},{"ID":6,"Name":"PassCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null}],"LinkedParentJobs":[],"LinkedChildJobs":[],"FullText":null}'
SELECT @KeyValue = JSON_MODIFY(@KeyValue, '$.Attributes[' + [key] + '].Value', '80')
FROM OPENJSON(@keyValue, '$.Attributes')
WHERE JSON_VALUE([value], '$.Name') = N'PassCycle'
使用变量作为路径
表达式(SQL Server 2017+):
DECLARE @KeyValue NVARCHAR(MAX) = N'{"JobID":1005,"ItemID":2,"Prefix":"CC","Version":1,"ItemTypeID":4,"ItemType":"Change Control","StageID":3,"StageName":"Change Control Closure","WorkflowID":1,"WorkflowName":"Change Control Workflow","JobStatus":0,"IsJobArchived":false,"IsJobCanceled":false,"IsJobOnHold":false,"IsJobPhasedOut":false,"RelationID":0,"JobLastUpdatedBy":"G4Admin","JobStartDate":"2019-07-18T08:02:44.737718Z","JobLastUpdated":"2019-07-18T08:02:44.9857249Z","JobDueDate":"2019-07-23T08:02:44.8997205Z","JobEstimatedDate":"2019-07-23T08:02:44.8877188Z","JobCompletedDate":null,"RevisionNumber":1,"DocketNo":390,"JobVariance":"0","Mappings":[],"Groups":[12],"InactiveGroups":null,"Attributes":[{"ID":22,"Name":"WorkflowType","Value":"50","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"Change Control","InactiveValue":null,"InactiveValueString":null},{"ID":18,"Name":"Reason for change","Value":"23","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"CMC change","InactiveValue":null,"InactiveValueString":null},{"ID":12,"Name":"Market","Value":"12","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":true,"GroupId":null,"ValueString":"Ireland","InactiveValue":null,"InactiveValueString":null},{"ID":14,"Name":"Product Name","Value":"34","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"DROXIA","InactiveValue":null,"InactiveValueString":null},{"ID":13,"Name":"CCDS Impacted?","Value":"15","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"No","InactiveValue":null,"InactiveValueString":null},{"ID":11,"Name":"JobOwner","Value":"G4Admin","DataType":"Text","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"G4Admin","InactiveValue":null,"InactiveValueString":null},{"ID":50,"Name":"PartNumber","Value":"CC-02-01","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":"CC-02-01","InactiveValue":null,"InactiveValueString":null},{"ID":50,"Name":"JobInitiator","Value":"G4Admin","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":"G4Admin","InactiveValue":null,"InactiveValueString":null},{"ID":10,"Name":"TaskLeft","Value":"3","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":null,"InactiveValue":null,"InactiveValueString":null},{"ID":4,"Name":"ProofCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null},{"ID":5,"Name":"PassCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null},{"ID":6,"Name":"PassCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null}],"LinkedParentJobs":[],"LinkedChildJobs":[],"FullText":null}'
DECLARE @stm nvarchar(max) = N''
SELECT @stm = @stm + CONCAT(
'SELECT @KeyValue = JSON_MODIFY(@KeyValue, ''$.Attributes[',
[key],
'].Value'', ''80''); '
)
FROM OPENJSON(@keyValue, '$.Attributes')
WHERE JSON_VALUE([value], '$.Name') = N'PassCycle'
EXECUTE sp_executesql @stm, N'@KeyValue NVARCHAR(MAX) OUTPUT', @KeyValue OUTPUT
DECLARE @KeyValue NVARCHAR(MAX) = N'{"JobID":1005,"ItemID":2,"Prefix":"CC","Version":1,"ItemTypeID":4,"ItemType":"Change Control","StageID":3,"StageName":"Change Control Closure","WorkflowID":1,"WorkflowName":"Change Control Workflow","JobStatus":0,"IsJobArchived":false,"IsJobCanceled":false,"IsJobOnHold":false,"IsJobPhasedOut":false,"RelationID":0,"JobLastUpdatedBy":"G4Admin","JobStartDate":"2019-07-18T08:02:44.737718Z","JobLastUpdated":"2019-07-18T08:02:44.9857249Z","JobDueDate":"2019-07-23T08:02:44.8997205Z","JobEstimatedDate":"2019-07-23T08:02:44.8877188Z","JobCompletedDate":null,"RevisionNumber":1,"DocketNo":390,"JobVariance":"0","Mappings":[],"Groups":[12],"InactiveGroups":null,"Attributes":[{"ID":22,"Name":"WorkflowType","Value":"50","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"Change Control","InactiveValue":null,"InactiveValueString":null},{"ID":18,"Name":"Reason for change","Value":"23","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"CMC change","InactiveValue":null,"InactiveValueString":null},{"ID":12,"Name":"Market","Value":"12","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":true,"GroupId":null,"ValueString":"Ireland","InactiveValue":null,"InactiveValueString":null},{"ID":14,"Name":"Product Name","Value":"34","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"DROXIA","InactiveValue":null,"InactiveValueString":null},{"ID":13,"Name":"CCDS Impacted?","Value":"15","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"No","InactiveValue":null,"InactiveValueString":null},{"ID":11,"Name":"JobOwner","Value":"G4Admin","DataType":"Text","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"G4Admin","InactiveValue":null,"InactiveValueString":null},{"ID":50,"Name":"PartNumber","Value":"CC-02-01","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":"CC-02-01","InactiveValue":null,"InactiveValueString":null},{"ID":50,"Name":"JobInitiator","Value":"G4Admin","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":"G4Admin","InactiveValue":null,"InactiveValueString":null},{"ID":10,"Name":"TaskLeft","Value":"3","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":null,"InactiveValue":null,"InactiveValueString":null},{"ID":4,"Name":"ProofCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null},{"ID":5,"Name":"PassCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null},{"ID":6,"Name":"PassCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null}],"LinkedParentJobs":[],"LinkedChildJobs":[],"FullText":null}'
SELECT @KeyValue = JSON_MODIFY(@KeyValue, '$.Attributes[' + [key] + '].Value', '80')
FROM OPENJSON(@keyValue, '$.Attributes')
WHERE JSON_VALUE([value], '$.Name') = N'PassCycle'
注意事项:
DECLARE @KeyValue NVARCHAR(MAX) = N'{"JobID":1005,"ItemID":2,"Prefix":"CC","Version":1,"ItemTypeID":4,"ItemType":"Change Control","StageID":3,"StageName":"Change Control Closure","WorkflowID":1,"WorkflowName":"Change Control Workflow","JobStatus":0,"IsJobArchived":false,"IsJobCanceled":false,"IsJobOnHold":false,"IsJobPhasedOut":false,"RelationID":0,"JobLastUpdatedBy":"G4Admin","JobStartDate":"2019-07-18T08:02:44.737718Z","JobLastUpdated":"2019-07-18T08:02:44.9857249Z","JobDueDate":"2019-07-23T08:02:44.8997205Z","JobEstimatedDate":"2019-07-23T08:02:44.8877188Z","JobCompletedDate":null,"RevisionNumber":1,"DocketNo":390,"JobVariance":"0","Mappings":[],"Groups":[12],"InactiveGroups":null,"Attributes":[{"ID":22,"Name":"WorkflowType","Value":"50","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"Change Control","InactiveValue":null,"InactiveValueString":null},{"ID":18,"Name":"Reason for change","Value":"23","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"CMC change","InactiveValue":null,"InactiveValueString":null},{"ID":12,"Name":"Market","Value":"12","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":true,"GroupId":null,"ValueString":"Ireland","InactiveValue":null,"InactiveValueString":null},{"ID":14,"Name":"Product Name","Value":"34","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"DROXIA","InactiveValue":null,"InactiveValueString":null},{"ID":13,"Name":"CCDS Impacted?","Value":"15","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"No","InactiveValue":null,"InactiveValueString":null},{"ID":11,"Name":"JobOwner","Value":"G4Admin","DataType":"Text","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"G4Admin","InactiveValue":null,"InactiveValueString":null},{"ID":50,"Name":"PartNumber","Value":"CC-02-01","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":"CC-02-01","InactiveValue":null,"InactiveValueString":null},{"ID":50,"Name":"JobInitiator","Value":"G4Admin","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":"G4Admin","InactiveValue":null,"InactiveValueString":null},{"ID":10,"Name":"TaskLeft","Value":"3","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":null,"InactiveValue":null,"InactiveValueString":null},{"ID":4,"Name":"ProofCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null},{"ID":5,"Name":"PassCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null},{"ID":6,"Name":"PassCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null}],"LinkedParentJobs":[],"LinkedChildJobs":[],"FullText":null}'
DECLARE @stm nvarchar(max) = N''
SELECT @stm = @stm + CONCAT(
'SELECT @KeyValue = JSON_MODIFY(@KeyValue, ''$.Attributes[',
[key],
'].Value'', ''80''); '
)
FROM OPENJSON(@keyValue, '$.Attributes')
WHERE JSON_VALUE([value], '$.Name') = N'PassCycle'
EXECUTE sp_executesql @stm, N'@KeyValue NVARCHAR(MAX) OUTPUT', @KeyValue OUTPUT
DECLARE @KeyValue NVARCHAR(MAX) = N'{"JobID":1005,"ItemID":2,"Prefix":"CC","Version":1,"ItemTypeID":4,"ItemType":"Change Control","StageID":3,"StageName":"Change Control Closure","WorkflowID":1,"WorkflowName":"Change Control Workflow","JobStatus":0,"IsJobArchived":false,"IsJobCanceled":false,"IsJobOnHold":false,"IsJobPhasedOut":false,"RelationID":0,"JobLastUpdatedBy":"G4Admin","JobStartDate":"2019-07-18T08:02:44.737718Z","JobLastUpdated":"2019-07-18T08:02:44.9857249Z","JobDueDate":"2019-07-23T08:02:44.8997205Z","JobEstimatedDate":"2019-07-23T08:02:44.8877188Z","JobCompletedDate":null,"RevisionNumber":1,"DocketNo":390,"JobVariance":"0","Mappings":[],"Groups":[12],"InactiveGroups":null,"Attributes":[{"ID":22,"Name":"WorkflowType","Value":"50","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"Change Control","InactiveValue":null,"InactiveValueString":null},{"ID":18,"Name":"Reason for change","Value":"23","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"CMC change","InactiveValue":null,"InactiveValueString":null},{"ID":12,"Name":"Market","Value":"12","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":true,"GroupId":null,"ValueString":"Ireland","InactiveValue":null,"InactiveValueString":null},{"ID":14,"Name":"Product Name","Value":"34","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"DROXIA","InactiveValue":null,"InactiveValueString":null},{"ID":13,"Name":"CCDS Impacted?","Value":"15","DataType":"Text","IsMaster":true,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"No","InactiveValue":null,"InactiveValueString":null},{"ID":11,"Name":"JobOwner","Value":"G4Admin","DataType":"Text","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"G4Admin","InactiveValue":null,"InactiveValueString":null},{"ID":50,"Name":"PartNumber","Value":"CC-02-01","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":"CC-02-01","InactiveValue":null,"InactiveValueString":null},{"ID":50,"Name":"JobInitiator","Value":"G4Admin","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":"G4Admin","InactiveValue":null,"InactiveValueString":null},{"ID":10,"Name":"TaskLeft","Value":"3","DataType":0,"IsMaster":false,"ItemData":false,"IsUserGroup":false,"GroupId":null,"ValueString":null,"InactiveValue":null,"InactiveValueString":null},{"ID":4,"Name":"ProofCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null},{"ID":5,"Name":"PassCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null},{"ID":6,"Name":"PassCycle","Value":"1","DataType":"Integer","IsMaster":false,"ItemData":true,"IsUserGroup":false,"GroupId":null,"ValueString":"1","InactiveValue":null,"InactiveValueString":null}],"LinkedParentJobs":[],"LinkedChildJobs":[],"FullText":null}'
SELECT @KeyValue = JSON_MODIFY(@KeyValue, '$.Attributes[' + [key] + '].Value', '80')
FROM OPENJSON(@keyValue, '$.Attributes')
WHERE JSON_VALUE([value], '$.Name') = N'PassCycle'
这两个示例都将修改JSON
数组中具有匹配条件JSON\u值([VALUE],'$.Name')=N'PassCycle'
的所有项(而不仅仅是一项)