从 SQL Server 2008 中查询 XML 列返回多行 [英] Returning multiple rows from querying XML column in SQL Server 2008

查看:43
本文介绍了从 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆