从 SQL Server 2008 中查询 XML 列返回多行 [英] Returning multiple rows from querying XML column in SQL Server 2008
本文介绍了从 SQL Server 2008 中查询 XML 列返回多行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个表 RDCAlerts
,在 XML
类型的列中包含以下数据,称为 AliasesValue
:
I have a table RDCAlerts
with the following data in a column of type XML
called AliasesValue
:
<aliases>
<alias>
<aliasType>AKA</aliasType>
<aliasName>Pramod Singh</aliasName>
</alias>
<alias>
<aliasType>AKA</aliasType>
<aliasName>Bijoy Bora</aliasName>
</alias>
</aliases>
我想创建一个返回两行的查询 - 每个别名一行,我尝试了以下查询:
I would like to create a query that returns two rows - one for each alias and I've tried the following query:
SELECT
AliasesValue.query('data(/aliases/alias/aliasType)'),
AliasesValue.query('data(/aliases/alias/aliasName)'),
FROM [RdcAlerts]
但它只返回一行,如下所示:
but it returns just one row like this:
AKA AKA | Pramod Singh Bijoy Bora
推荐答案
看联机丛书中的 .nodes() 方法:
Look at the .nodes() method in Books Online:
DECLARE @r TABLE (AliasesValue XML)
INSERT INTO @r
SELECT '<aliases> <alias> <aliasType>AKA</aliasType> <aliasName>Pramod Singh</aliasName> </alias> <alias> <aliasType>AKA</aliasType> <aliasName>Bijoy Bora</aliasName> </alias> </aliases> '
SELECT c.query('data(aliasType)'), c.query('data(aliasName)')
FROM @r r CROSS APPLY AliasesValue.nodes('aliases/alias') x(c)
这篇关于从 SQL Server 2008 中查询 XML 列返回多行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文