修改多行SQL服务器XML数据

Modify multiple rows of SQL Server XML data

我有一个临时文件 table,其中包含我希望作为元素注入到 SQL 服务器列中的值。我可以使用修改和插入语句为一个条目执行此操作。但是我怎样才能对 table 中的多行执行此操作?

一些示例数据如下所示:

SerializedTable:

ID    SerializedXML
-----------------------------------------
7     <Form> <Field1>111</Field1> </Form>
8     <Form> <Field1>112</Field1> </Form>

#TempTable:

ID    FK_ID    Value
--------------------
1     7        120
2     8        124

所以我需要使用值列中的值向 SerializedXML 添加一个新元素。

所以最后的 table 看起来像:

SerializedTable:

ID    SerializedXML
---------------------------------------------------------------
7     <Form> <Field1>111</Field1> <Field2>120</Field2> </Form>
8     <Form> <Field1>112</Field1> <Field2>124</Field2> </Form>

所有新插入的字段的元素名称都相同。

试试这个

update s
set SerializedXML.modify('
  insert <Field2>{ sql:column("t.Value") }</Field2>
  after (/Form/Field1)[1] 
')
from SerializedTable s
join TempTable t on s.ID = t.FK_ID

SQL fiddle