一尘不染

为SQL表中的每一行切碎XML

sql

我有一个包含两列,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的切碎值。


阅读 200

收藏
2021-03-08

共1个答案

一尘不染

没有关于您的实际XML以及如何粉碎它以获取一些值的任何知识,就不可能完整地回答,但这应该为您指明了正确的方向:

原样 返回ID和XML __

 SELECT ID
       ,TheXmlColumn
 FROM YourTable

这将返回ID和XML中的值

 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
2021-03-08