我有一个表,其中包含两列、ID 和 XML 数据。我想分解每个 ID 的 XML。我在 XML 中提取单个值,并且所有 XML 的结构都相同,我只是不确定如何循环遍历表并将 XML 查询应用于每一行。
我需要应用的查询如下:
Select top 1
Element1 = XV.value('(.)[1]','nvarchar(32)')
from @xml.nodes('Parameters/Parameter/Value') as x(XV)
因此最终结果将有两列:ID 和来自 XML 的分解值。
最佳答案
如果不了解您的实际 XML 以及如何分解它以获得一些值,就不可能完整地回答,但这应该为您指明正确的方向:
按原样返回 ID 和 XML
SELECT ID
,TheXmlColumn
FROM YourTable
这会从 XML 中返回 ID 和值
SELECT ID
,TheXmlColumn.value('Some XPaht','SomeType') AS SomeValueFromXML
FROM YourTable
如果有更多嵌入行,就会像这样
SELECT ID
,nd.value('Some XPaht','SomeType') AS SomeValueFromXMLRow
FROM YourTable
OUTER APPLY TheXmlColumn.nodes('SomeXPath') AS A(nd)
我的魔法玻璃灯泡告诉我,你可能需要这样的东西:
SELECT ID
,TheXmlColumn.value('(Parameters/Parameter/Value)[1]','nvarchar(max)') AS SomeValueFromXML
FROM YourTable
关于sql - 分解 SQL 表中每一行的 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40412390/