【发布时间】:2021-12-10 07:36:20
【问题描述】:
这与我之前的帖子有关:Link to Previous Post
看到完整的 JSON 字符串:
DECLARE @json NVARCHAR(MAX)
SET @json=
'{
"status":"ok",
"data":{
"response":{
"GetCustomReportResult":{
"CIP":null,
"CIQ":null,
"Company":null,
"ContractOverview":null,
"ContractSummary":null,
"Contracts":null,
"CurrentRelations":null,
"Dashboard":null,
"Disputes":null,
"DrivingLicense":null,
"Individual":null,
"Inquiries":{
"InquiryList":null,
"Summary":{
"NumberOfInquiriesLast12Months":0,
"NumberOfInquiriesLast1Month":0,
"NumberOfInquiriesLast24Months":0,
"NumberOfInquiriesLast3Months":0,
"NumberOfInquiriesLast6Months":0
}
},
"Managers":null,
"Parameters":{
"Consent":True,
"IDNumber":"124",
"IDNumberType":"TaxNumber",
"InquiryReason":"reditTerms",
"InquiryReasonText":null,
"ReportDate":"2021-10-04 06:27:51",
"Sections":{
"string":[
"infoReport"
]
},
"SubjectType":"Individual"
},
"PaymentIncidentList":null,
"PolicyRulesCheck":null,
"ReportInfo":{
"Created":"2021-10-04 06:27:51",
"ReferenceNumber":"60600749",
"ReportStatus":"SubjectNotFound",
"RequestedBy":"Jir",
"Subscriber":"Credit",
"Version":544
},
"Shareholders":null,
"SubjectInfoHistory":null,
"TaxRegistration":null,
"Utilities":null
}
}
},
"errormsg":null
}'
SELECT * FROM OPENJSON(@json);
我想更新 Consent 元素的值,在 value 周围加上引号“”,因为 JSON 很敏感并会导致错误。 Consent 元素位于 data.response.GetCustomReportResult.Parameters.Consent。
然后我只想将更新后的 JSON 字符串列放入此代码中。大概可以用CTE或者子查询来实现?
SELECT
y.cijreport,
y.ApplicationId,
x.CIP,
x.CIQ
--other fields
FROM myTable as y
CROSS APPLY OPENJSON (updated_cijreport, '$.data.response')
WITH (
CIP nvarchar(max) AS JSON,
CIQ nvarchar(max) AS JSON
) AS x;
【问题讨论】:
标签: sql json sql-server tsql common-table-expression