Как использовать список результатов XQuery в качестве реляционной таблицы в SQL Server 2008?

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

Спасибо!


person Stavros Macrakis    schedule 05.08.2011    source источник


Ответы (1)


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

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
person Mikael Eriksson    schedule 05.08.2011
comment
Еще раз спасибо за ответ. Можете ли вы порекомендовать хорошую книгу или веб-сайт для обучения эффективному использованию XQuery в SQL Server? До сих пор я находил материалы MSDN чрезвычайно многословными, плохо организованными и излишне сложными. - person Stavros Macrakis; 05.08.2011
comment
@Stavros - взгляните на этот ответ. stackoverflow.com/questions/6749469/sql-xml- обработчик заказов/. Он содержит ссылки, которые я использую в качестве справочных. Я не знаю ни одного учебника или книги по XQuery в SQL Server. - person Mikael Eriksson; 06.08.2011