s-s-rS:解析来自具有 XML 列的 SQL Server 查询的结果
Posted
技术标签:
【中文标题】s-s-rS:解析来自具有 XML 列的 SQL Server 查询的结果【英文标题】:s-s-rS: Parse results from a SQL Server query that has an XML Column 【发布时间】:2011-03-25 18:28:03 【问题描述】:我正在查看以下查询:
SELECT txt.ID, txt.Rev, txt.Words,
flds.ReferenceName
FROM Fields flds (NOLOCK)
JOIN WorkItemLongTexts txt (NOLOCK)
ON flds.FldID = txt.FldID
WHERE flds.ReferenceName = 'Microsoft.VSTS.TCM.Steps'
第三列(txt.Words)返回这个值:
<steps id="0" last="3">
<step id="1" type="ValidateStep">
<parameterizedString>
<text>Step 1</text>
</parameterizedString>
<parameterizedString>
<text>Result 1</text>
</parameterizedString>
<description />
</step>
<step id="2" type="ValidateStep">
<parameterizedString>
<text>Step 2</text>
</parameterizedString>
<parameterizedString>
<text>Result 2</text>
</parameterizedString>
<description />
</step>
</steps>
很明显,我可以使用 .net 客户端应用程序轻松解析这个问题。不过,我想将此查询直接放入 s-s-rS 报告中。
有没有办法将此列中的数据导入 s-s-rS 可消耗数据集,如下所示: 1 |验证步骤 |第 1 步 |结果 1 2 |验证步骤 |第 2 步 |结果2
(或类似的)
【问题讨论】:
【参考方案1】:您可以使用TSQL's OpenXML 功能从您的 xml 数据中获取行集,但是您需要元素和属性的组合,所以这将是一些工作。
【讨论】:
【参考方案2】:我对@987654321@ 一无所知,但这是我在常规查询中的做法。也许这是你可以使用的东西。
我已经简化了您的示例并改用表变量。我假设 XMLColumn 的数据类型为 xml
。
-- Sample table
declare @T table (ID int, XMLColumn xml)
-- Insert sample data
insert into @T values
(1,'
<steps id="0" last="3">
<step id="1" type="ValidateStep">
<parameterizedString>
<text>Step 1</text>
</parameterizedString>
<parameterizedString>
<text>Result 1</text>
</parameterizedString>
<description />
</step>
<step id="2" type="ValidateStep">
<parameterizedString>
<text>Step 2</text>
</parameterizedString>
<parameterizedString>
<text>Result 2</text>
</parameterizedString>
<description />
</step>
</steps>')
-- Duplcate first row
insert into @T
select 2, XMLColumn
from @T
-- The query
select
ID as RowID,
s.value('@id', 'int') as ID,
s.value('@type', 'varchar(15)') as [Type],
s.value('parameterizedString[1]/text[1]', 'varchar(15)') as Step,
s.value('parameterizedString[2]/text[1]', 'varchar(15)') as Result
from @T
结果
RowID ID Type Step Result
----------- ----------- --------------- --------------- ---------------
1 1 ValidateStep Step 1 Result 1
1 2 ValidateStep Step 2 Result 2
2 1 ValidateStep Step 1 Result 1
2 2 ValidateStep Step 2 Result 2
【讨论】:
以上是关于s-s-rS:解析来自具有 XML 列的 SQL Server 查询的结果的主要内容,如果未能解决你的问题,请参考以下文章