我在 sql 数据库中有一个 XML 类型的列。我想在名为 GoodsSerial
的所有节点中添加一个具有相同值的新节点 EFDRow
。
<Serials>
<GoodsSerial>
<GSerialSCredit>2015/08/11</GSerialSCredit>
<GSerialECredit>2015/08/11</GSerialECredit>
<GSerialStart>1</GSerialStart>
<GSerialEnd>5</GSerialEnd>
</GoodsSerial>
<GoodsSerial>
<GSerialSCredit>2015/08/11</GSerialSCredit>
<GSerialECredit>2015/08/11</GSerialECredit>
<GSerialStart>10</GSerialStart>
<GSerialEnd>15</GSerialEnd>
</GoodsSerial>
</Serials>
我已经尝试过这段代码
UPDATE Tbl
SET SerialXml.modify('insert <EFDRow>{sql:column("EFDRow")}</EFDRow> into (/Serials/GoodsSerial)[1]')
但它仅将 EFDRow 节点添加到第一个 GoodsSerial 节点。
最佳答案
您可以粉碎您的 XML /Serials/GoodsSerial
并使用 xml 路径
添加的 EFDRow
值重建它。
update dbo.Tbl
set SerialXml = (
select GS.X.query('*'),
EFDRow
from SerialXml.nodes('/Serials/GoodsSerial') as GS(X)
for xml path('GoodsSerial'), root('Serials'), type
);
GS.X.query('*')
将为您提供 GoodsSerial
中已存在的所有节点。
关于sql-server - 如何在sql server中的所有节点中添加XML节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31936159/