我有一个带有xml列的表(在sqlserver05上)。该列的格式类似于:
<doc>
<field name="a">foo</field>
<field name="b">bar</field>
<field name="c">fizz</field>
<field name="d">buzz</field>
</doc>
我想将该xml的一个子集复制到一个新的xml列,例如:
<doc>
<field name="a">foo</field>
<field name="c">fizz</field>
</doc>
我该怎么办?
编辑:这对我有用(基于接受的答案)
UPDATE tbl
SET xml_SubColumn =
xml_Column.query('<doc>{//field[@name="a" or @name="c"]}</doc>')
答案 0 :(得分:2)
使用XQuery:
declare @x xml;
set @x = '<doc>
<field name="a">foo</field>
<field name="b">bar</field>
<field name="c">fizz</field>
<field name="d">buzz</field>
</doc>';
select @x.query('<doc>{//field[@name="a" or @name="c"]}</doc>');
在您的情况下,将xquery应用于XML列。当然,根据您的具体情况调整XQuery,我的表达式只是一个假设您的标准为@name='a' or @name='b'
的示例。