1

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>

しかし、行ごとに 1 つの x を持つ SQL テーブルとして抽出するにはどうすればよいでしょうか?

さらに良いことに、SQL で作業できるように、x と y の 2 つの列を持つ SQL テーブルとして抽出するにはどうすればよいでしょうか。

ありがとう!

4

1 に答える 1

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
于 2011-08-05T15:04:16.153 に答える