SQL2008R2同查询返回普通列与格式化XML列的实现方法
SQL Server 2008R2 实现方案
你可以将生成XML的逻辑作为子查询放在SELECT列表中,通过主键关联绑定当前行即可实现需求,写法如下:
SELECT columnA, ( SELECT columnB, columnC FROM tableA t2 -- 替换为你表的实际主键字段,保证子查询仅取当前行的字段生成XML WHERE t2.主键字段 = t1.主键字段 FOR XML PATH('Row'), ROOT('Root'), TYPE ) AS myXml FROM tableA t1
参数说明
TYPE关键字:指定返回结果为原生XML类型,若需要返回字符串格式的XML文本,可删除该关键字PATH('Row'):设置每行数据的外层标签名,可自定义命名,若填写PATH('')则会去掉行级外层标签ROOT('Root'):设置整个XML的根节点标签名,可自定义命名
如果你的需求是所有行的columnB、columnC合并为同一个全表XML,每行的myXml都返回完整的全表XML数据,可以去掉子查询的WHERE关联条件即可:
SELECT columnA, ( SELECT columnB, columnC FROM tableA FOR XML PATH('Row'), ROOT('Root'), TYPE ) AS myXml FROM tableA
内容的提问来源于stack exchange,提问作者DFlat
相关产品推荐
相关产品推荐

