如何在SQL Server 2008中将XQuery结果列表用作关系表?

时间:2011-08-05 15:00:30

标签: sql-server-2008 xquery xquery-sql

我有一个包含XML列的表:

declare @xmltest xml;
set @xmltest =  
 '<list> 
    <el> <x>1</x> <y>one</y> </el>
    <el> <x>2</x> <y>two</y> </el>
  </list>'

使用XQuery,我可以提取所有x:

 select @xmltest.query('/list/el/x')

返回

<x>1</x><x>2</x>

但是如何将它们作为SQL表提取出来,每行一个x?

更好的是,如何将它们作为SQL表提取,有两列x和y,以便我可以使用SQL处理它们?

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用nodes()value()

select 
  N.value('x[1]', 'int') as x,
  N.value('y[1]', 'varchar(10)') as y
from @xmltest.nodes('/list/el') as T(N)

结果:

x           y
----------- ----------
1           one
2           two