Скопируйте подмножество XML из одного столбца в другой на сервере SQL - PullRequest
0 голосов
/ 10 марта 2010

У меня есть таблица (на sqlserver05) со столбцом xml. Формат столбца похож на этот:

<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 Ответ

2 голосов
/ 10 марта 2010

Использовать 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'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...