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

如何修改SQL FOR XML RAW输出,将属性格式转为元素内容格式?

问题描述

我执行了如下SQL查询:

SELECT c.FirstName
FROM HumanResources.Employee e
INNER JOIN Person.Contact c 
    ON c.ContactID = e.ContactID
WHERE c.FirstName = 'Rob'
FOR XML RAW ('Employee');

得到的结果为:

<Employee FirstName="Rob"/>

想请教是否有办法将输出格式修改为如下形式:

<Employee>Rob</Employee>
解决方案

把FOR XML RAW换成FOR XML PATH,再调整列的输出方式就能实现需求,两种写法供你参考:

  1. 直接指定文本内容的写法:
SELECT c.FirstName AS [text()]
FROM HumanResources.Employee e
INNER JOIN Person.Contact c 
    ON c.ContactID = e.ContactID
WHERE c.FirstName = 'Rob'
FOR XML PATH ('Employee');

这里[text()]会让FirstName的值直接成为<Employee>元素的文本内容,而不是属性。

  1. 使用ELEMENTS关键字的写法:
SELECT c.FirstName
FROM HumanResources.Employee e
INNER JOIN Person.Contact c 
    ON c.ContactID = e.ContactID
WHERE c.FirstName = 'Rob'
FOR XML PATH ('Employee'), ELEMENTS XSINIL;

ELEMENTS会把查询结果的列转换成子元素,XSINIL是为了处理可能的NULL值,如果你的场景里不会出现NULL,也可以只写ELEMENTS。

修改后输出就会变成你想要的格式:

<Employee>Rob</Employee>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 02:31:08