Извлечение элементов в xml в строки в операторе select - PullRequest
0 голосов
/ 03 декабря 2010

У меня есть столбец XML в моей базе данных SQL Server 2008. Пример XML в каждой строке моей таблицы

<document>
 <part1>
   <listitem>val1</listitem>
   <listitem>val2</listitem>
   <listitem>val3</listitem>
 </part1>
 <part2>
   <listitem>val4</listitem>
 </part2>
</document>

Я хотел бы выбрать все элементы из всех строк. Из приведенного выше примера я должен получить четыре строки со значением listitem.

Ответ

select x.nd.value ('(.)[1]', 'varchar(250)') as ValuesFromXml
from TableWithXmlColumn t cross apply t.XmlContent.nodes (
'//listitem') x(nd);

Спасибо за помощь

1 Ответ

2 голосов
/ 03 декабря 2010

Вы можете сделать это так:

select Col.value('.', 'varchar(20)') 
from yourtable 
cross apply XmlColumn.nodes('//listitem') as NewTable(Col)
...