我们有以下格式的JSON数据:
{
"id": "f53283cc-5af7-4864-a3f6-86f69d81ae93",
"SectionId": 5493,
"Fields": [
{
"FieldId": 17943,
"FieldValue":
"[
{
\"Web_Id\":\"1;#99999984_6_11_018111\",
\"EDF\":
[
{
\"key\":\"Orders\",
\"val\":\"1\"
}
],
\"CCID\":\"1;#AVSPN004987\",
\"G\":null
}
]",
"FieldName": "<p>Primary_Product</p>17943",
"VersionID": 2
}
]
}
从这些数据中,我可以使用下面的查询从FieldID、FieldValue、FieldName和VersionID等字段属性级别提取值.但是,我想知道是否可以从FieldValue元素中提取WebID或CCID?目前,我正在进行一次子筛选以获得值:
SELECT
AC_ID
, FieldID
, CASE
WHEN FieldName LIKE '%Item_Description%' THEN 'Item Description'
WHEN FieldName LIKE '%Item_Number%' THEN 'Item Number'
WHEN FieldName LIKE '%Primary_Product%' THEN 'Primary Product'
ELSE ''
END AS Field
, CASE
WHEN FieldID <> '17943' THEN FieldValue
WHEN FieldID = '17943' THEN SUBSTRING(STUFF(FieldValue, 1, 15, ''), 1, CHARINDEX('"', STUFF(FieldValue, 1, 15, '')) - 1)
ELSE NULL
END AS FieldValue
, SUBSTRING(STUFF(FieldValue, 1, 15, ''), 1, CHARINDEX('"', STUFF(FieldValue, 1, 15, '')) - 1)
FROM CTE_BASE
CROSS APPLY OPENJSON(CTE_BASE.Fields)
WITH (
FieldId VARCHAR(10) '$.FieldId'
, FieldName VARCHAR(MAX) '$.FieldName'
, FieldValue VARCHAR(MAX) '$.FieldValue'
) AS CDB