sql - 分解 SQL 表中每一行的 XML

标签 sql sql-server xml t-sql xpath

我有一个表,其中包含两列、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/

相关文章:

sql-server - SSRS BIDS 表达式以根据 AD GROUPS 选择可见性

c# - 使用 SQL 命令从数据库读取最后插入的 UID

MySQL:从格式异常的 XML 文件中提取数据

java - Android 上的伍德斯托克斯

sql - 如何创建在 Postgres 中创建表的 IF 语句?

php - 在 MySQL 中使用 `LIKE` 和 `MATCH AGAINST` 搜索数据库

java - 使用 Hibernate 将 jTable 中的所有行添加到 MS SQL Server DB

sql-server - 如何从 SQL Server 中的表中查询 Xml 值和属性?

sql - 如何使用计算列的 sql 函数从 XML 中检索值

mysql - 什么 SQL 关系适合这里?