在sql server上将xml的一个子集从一列复制到另一列

时间:2010-03-09 22:12:52

标签: sql-server xml sql-server-2005

我有一个带有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>')

1 个答案:

答案 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'的示例。