更新XML列-Sql Server
我有一个XML专栏 背景更新XML列-Sql Server,sql,sql-server,xml,sql-server-2008,Sql,Sql Server,Xml,Sql Server 2008,我有一个XML专栏 背景 下面插入不存在但不按顺序排列的元素。也许会有帮助 DECLARE @x1 XML = '<root> <Tag1>true</Tag1> <Tag2> <Tag3> <Tag4>43</Tag4> <Tag4>44</Tag4> <Tag4>46</Tag4> <Tag
下面插入不存在但不按顺序排列的元素。也许会有帮助
DECLARE @x1 XML =
'<root>
<Tag1>true</Tag1>
<Tag2>
<Tag3>
<Tag4>43</Tag4>
<Tag4>44</Tag4>
<Tag4>46</Tag4>
<Tag4>50</Tag4>
<Tag4>89</Tag4>
<Tag4>99</Tag4>
<Tag4>166</Tag4>
</Tag3>
</Tag2>
</root>'
, @x2 XML =
'<Tag4>43</Tag4>
<Tag4>44</Tag4>
<Tag4>46</Tag4>
<Tag4>165</Tag4>';
DECLARE @x3 XML = (
SELECT *
FROM (
SELECT s.n.value('.','int') FROM @x2.nodes('*') AS s(n)
EXCEPT
SELECT f.n.value('.','int')
FROM @x1.nodes('/root/Tag2/Tag3/Tag4') AS f(n)
) AS Tag4Values (Tag4)
FOR XML PATH (''));
SET @x1.modify('insert sql:variable("@x3") into (/root/Tag2/Tag3)[1]');
SELECT @x1;
<Tag4>43</Tag4>
<Tag4>44</Tag4>
<Tag4>46</Tag4>
<Tag4>165</Tag4>
<root>
<Tag1>true</Tag1>
<Tag2>
<Tag3>
<Tag4>43</Tag4>
<Tag4>44</Tag4>
<Tag4>46</Tag4>
<Tag4>50</Tag4>
<Tag4>89</Tag4>
<Tag4>99</Tag4>
<Tag4>165</Tag4>
<Tag4>166</Tag4>
</Tag3>
</Tag2>
</root>
DECLARE @x1 XML =
'<root>
<Tag1>true</Tag1>
<Tag2>
<Tag3>
<Tag4>43</Tag4>
<Tag4>44</Tag4>
<Tag4>46</Tag4>
<Tag4>50</Tag4>
<Tag4>89</Tag4>
<Tag4>99</Tag4>
<Tag4>166</Tag4>
</Tag3>
</Tag2>
</root>'
, @x2 XML =
'<Tag4>43</Tag4>
<Tag4>44</Tag4>
<Tag4>46</Tag4>
<Tag4>165</Tag4>';
DECLARE @x3 XML = (
SELECT *
FROM (
SELECT s.n.value('.','int') FROM @x2.nodes('*') AS s(n)
EXCEPT
SELECT f.n.value('.','int')
FROM @x1.nodes('/root/Tag2/Tag3/Tag4') AS f(n)
) AS Tag4Values (Tag4)
FOR XML PATH (''));
SET @x1.modify('insert sql:variable("@x3") into (/root/Tag2/Tag3)[1]');
SELECT @x1;