在SQL表中为每行粉碎XML

时间:2016-11-03 22:36:57

标签: sql sql-server xml tsql xpath

我有一个包含两列,ID和XML数据的表。我想为每个ID粉碎XML。我在XML中提取单个值,并且所有XML的结构都相同我只是不确定如何遍历表并将XML查询应用于每一行。

我需要申请的查询如下:

DoFn

因此,最终结果将有两列,ID和来自XML的碎片值。

1 个答案:

答案 0 :(得分:2)

如果不了解您的实际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
相关问题