将xml中的元素提取到select语句中的行

时间:2010-12-03 18:22:58

标签: sql xml xquery-sql

我的sql server 2008数据库中有xml列。我表格每行的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 个答案:

答案 0 :(得分:2)

你可以这样做:

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