You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server使用FOR XML PATH生成XML时如何将字段值转为独立子节点

SQL Server 生成指定结构XML的实现方案

直接修改SELECT语句中payFrequency字段的生成逻辑即可,不需要额外的XML后置处理,具体实现代码如下:

declare @tbl as table 
(
    employeeName    nvarchar(50),
    payFrequency    nvarchar(50)
)

insert into @tbl
select 'John', 'Monthly'
union
select 'Carl', 'Biweekly'

select 
    employeeName AS 'Company/Employee',
    (
        SELECT '' AS [sql:column("payFrequency")]
        FOR XML PATH(''), TYPE
    ) AS 'Company/PayFrequency'
from @tbl
for xml path ('employees'), root('paySchedule')

实现原理

  • 直接通过列别名指定Company/PayFrequency路径时,FOR XML PATH会默认将字段值作为<PayFrequency>节点的文本内容,无法自动生成以字段值为名称的子节点。
  • 嵌套FOR XML子查询配合sql:column()函数,可以读取当前行的payFrequency字段值作为子节点的名称,给节点赋值空字符串即可生成对应名称的自闭合标签。
  • 子查询末尾加TYPE关键字,是为了让子查询返回原生XML类型,避免特殊字符被转义为文本。

执行上述代码后,输出的XML结构和预期完全一致:

<paySchedule>
  <employees>
    <Company>
      <Employee>John</Employee>
      <PayFrequency>
        <Monthly />
      </PayFrequency>
    </Company>
  </employees>
  <employees>
    <Company>
      <Employee>Carl</Employee>
      <PayFrequency>
        <Biweekly />
      </PayFrequency>
    </Company>
  </employees>
</paySchedule>

内容的提问来源于stack exchange,提问作者user3561257

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 22:54:20