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

如何通过SQL的FOR XML语句生成同时含属性和值的XML节点

解决方案

核心实现逻辑是利用FOR XML PATH的字段别名规则:带@前缀的别名会被识别为对应节点的属性,同节点名的非@前缀别名会被识别为节点的文本值。

固定值测试示例

直接运行以下SQL即可得到你需要的XML格式:

SELECT 
    'EUR' AS [Amount/@Ccy],
    100.20 AS [Amount]
FOR XML PATH(''), TYPE

运行输出结果:

<Amount Ccy="EUR">100.20</Amount>

实际表查询示例

如果数值和币种来自业务表,写法如下(示例表为transactions,包含currency、amount字段):

SELECT 
    currency AS [Amount/@Ccy],
    amount AS [Amount]
FROM transactions
-- 可补充你的过滤条件
WHERE id = 1
FOR XML PATH(''), TYPE

注意事项

属性对应的字段必须写在节点值字段的前面,否则会生成两个独立的Amount节点,无法合并为同一个带属性的节点。

扩展场景:嵌套到父节点

如果需要将该节点嵌入到其他父节点中,只需要调整PATH参数即可,示例:

SELECT 
    id AS [@TransId],
    currency AS [Amount/@Ccy],
    amount AS [Amount]
FROM transactions
WHERE id = 1
FOR XML PATH('Transaction'), TYPE

输出结果示例:

<Transaction TransId="1">
    <Amount Ccy="EUR">100.20</Amount>
</Transaction>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 01:30:04