下面列出了一些示例xml,我正在尝试从SQL解析此数据。无论我如何尝试使用下面列出的三种方法提取数据,我总是得到空记录。我希望将每个值元素的描述放入一列。第一个
ogsagwnx1#
请尝试以下解决方案。由于未提供#3,您可能需要调整输出。
查询语句
DECLARE @XMLData XML = N'<ArrayOfKeyValueOfstringstring xmlns:i="https://protect-us.mimecast.com/s/9cb7CpYVxNhnZ2PEHP-RJz?domain=w3.org" xmlns="https://protect-us.mimecast.com/s/jkqRCqx8yOt8vQG6hXaX0z?domain=schemas.microsoft.com"> <KeyValueOfstringstring> <Key>dateCleared</Key> <Value>null</Value> </KeyValueOfstringstring> <KeyValueOfstringstring> <Key>juvenile</Key> <Value>{"code":"N","description":"No"}</Value> </KeyValueOfstringstring> <KeyValueOfstringstring> <Key>uOF</Key> <Value>{"code":"N","description":"No"}</Value> </KeyValueOfstringstring> <KeyValueOfstringstring> <Key>disposition</Key> <Value>{"code":"0","description":"0 NOT CLEARED"}</Value> </KeyValueOfstringstring> <KeyValueOfstringstring> <Key>domViol</Key> <Value>{"code":"N","description":"No"}</Value> </KeyValueOfstringstring> </ArrayOfKeyValueOfstringstring>'; ;WITH XMLNAMESPACES(DEFAULT 'https://protect-us.mimecast.com/s/jkqRCqx8yOt8vQG6hXaX0z?domain=schemas.microsoft.com') , rs AS ( SELECT c.value('(Key/text())[1]', 'VARCHAR(30)') AS [key] , c.value('(Value/text())[1]', 'NVARCHAR(MAX)') AS [json] FROM @XMLData.nodes('/ArrayOfKeyValueOfstringstring/KeyValueOfstringstring') AS t(c) ) SELECT * , JSON_VALUE([json], '$.code') AS code , JSON_VALUE([json], '$.description') AS [description] FROM rs WHERE ISJSON([json]) = 1;
输出
| 钥匙|詹森|代码|说明书|| - -|- -|- -|- -|| 幼年的|{【编码】:“否”,【描述】:“否”}|不|没有|| 无故障|{【编码】:“否”,【描述】:“否”}|不|没有|| 处置|{“代码”:“0”,“说明”:“0未清除”}|第0页|0未清除|| 多姆维奥尔|{【编码】:“否”,【描述】:“否”}|不|没有|
1条答案
按热度按时间ogsagwnx1#
请尝试以下解决方案。
由于未提供#3,您可能需要调整输出。
查询语句
输出
| 钥匙|詹森|代码|说明书|
| - -|- -|- -|- -|
| 幼年的|{【编码】:“否”,【描述】:“否”}|不|没有|
| 无故障|{【编码】:“否”,【描述】:“否”}|不|没有|
| 处置|{“代码”:“0”,“说明”:“0未清除”}|第0页|0未清除|
| 多姆维奥尔|{【编码】:“否”,【描述】:“否”}|不|没有|