我的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);
感谢您的帮助
答案 0 :(得分:2)
你可以这样做:
select Col.value('.', 'varchar(20)')
from yourtable
cross apply XmlColumn.nodes('//listitem') as NewTable(Col)