Для поля xml (SQL Server) мне нужно добавить узел в каждый поднод на основе исходной таблицы и условия. Это мой XML-данные:Как изменить поддомены xml с помощью XQuery на SQL Server
declare @X table (XMLDATA xml)
insert @X values('
<row>
<node>
<name>Francesco</name>
</name>
<node>
<label>Alessandro</name>
</node>
<node>
<name>Daniele</name>
</node>
</row>')
Для каждого <name>
, я хочу, чтобы добавить узел <number>
. Спички для номеров и имен написаны в таблице @T
:
declare @T table (name varchar(20), number int)
insert @T values
('Alessandro', 24)
,('Francesco', 10)
,('Daniele', 16)
Чтобы обновить узлы, которые я использую XMLDATA.modify
, и я использую условие XPATH, чтобы выбрать правильный узел:
update @X set XMLDATA.modify('insert element number {sql:column("number")} as last into (row/node[name=sql:column("name")])[1]')
from @X
cross join @T
Запрос выше работ только для первой строки @T
(в примере Alessandro/24). Остальные 2 строки @T
игнорируются. Мне нужно добавить number
на каждые node
. Это последний XMLDATA:
<row>
<node>
<name>Francesco</name>
</node>
<node>
<name>Alessandro</name>
<number>24</number>
</node>
<node>
<name>Daniele</name>
</node>
</row>
Даже если ответ Ronak Patel является хорошим способом обхода (который я проверил), я хотел бы знать, как работает 'fieldxml.modify()' и синтаксис для обновления многих узлов в строке. Я ошибаюсь, и обходной путь, который помог мне, должен быть отмечен как «правильный ответ»? – Radioleao
Действительная точка ... Ниже моего ответа вы прокомментировали * Я просто пишу образец подмножества * (пожалуйста, добавьте ожидаемый выход, соответствующий образцу). Это поможет вам дать точный ответ. – Shnugo
Я написал, что у меня сотни узлов на разных уровнях. Необходимо, чтобы я опубликовал реальный пример, чтобы спросить синтаксис MS SQL? – Radioleao