项目关系数据到XML列 - 是否可能?

时间:2013-08-07 10:13:55

标签: sql-server xml projection

我有两个具有以下结构的表:

People

Id | LastName | FirstName | Other columns...

第二个表有一个XML列:

Id | MyXmlCol | Other columns...

MyXmlCol存储以下XML:

<myData>
  <block>
    <person id="1" />
    ...other nodes
  </block>
  ...other blocks
</myData>

id属性实际指向People表的Id列。

我需要的是查询MyXmlCol,以便它返回:

<myData>
  <block>
    <person id="1" LastName="Jones" FirstName="Bob" />
    ...other nodes
  </block>
  ...other blocks
</myData>

是否可以进行此类投影? 我正在使用Sql Server 2012。

1 个答案:

答案 0 :(得分:1)

如果单个元素“块”中只能有一个元素“person”,那么这应该适合:

update T
set MyXmlCol.modify('
    insert (
        attribute LastName {sql:column("P.LastName")},
        attribute FirstName {sql:column("P.FirstName")}
    )
    into (/myData/block/person)[1]')
from @Table2 T
inner join @People P on T.MyXmlCol.value('(/myData/block/person/@id)[1]', 'int') = P.Id