Как использовать список результатов XQuery в качестве реляционной таблицы в SQL Server 2008? - PullRequest
1 голос
/ 05 августа 2011

У меня есть таблица со столбцом 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 Ответ

1 голос
/ 05 августа 2011

Вы можете использовать узлов () и значение ()

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
...