【发布时间】:2018-03-02 12:11:10
【问题描述】:
我有一个包含 XML 文件的表格列。我想读取 XML 数据并显示出来。
我想出了以下代码。但它只读取列中的一行 还想显示其他 XML 数据
declare @xml xml
select @xml = event_data_XML from #temp
SELECT * FROM (
SELECT
CAST(f.x.query('data(@name)') as varchar(150)) as data_name,
CAST(f.x.query('data(value)') as varchar(150)) as data_value
FROM @xml.nodes('/event') as t(n)
CROSS APPLY t.n.nodes('data') as f(x)) X
PIVOT (MAX(data_value) FOR data_name IN (NTDomainName, DatabaseName, ServerName)) as pvt
输出应该是这样的(NTDomainName, DatabaseName, ServerName 都是xml数据)
【问题讨论】:
-
添加最小样本数据。
-
这里我们需要看一些示例数据;没有那里我们无法给出答案。我只能建议在更多节点上使用
CROSS APPLY。 -
在不知道您的 XML 的情况下(添加 consumable 示例 - 没有图片!)没有人可以帮助您。你为什么阅读
#temp。如果不止一行,您的select @xml = event_data_XML from #temp将失败...请使用编辑选项添加更多详细信息
标签: sql sql-server xml stored-procedures