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

MySQL如何将SQL查询结果转换为属性格式XML而非嵌套标签格式

实现方案

MySQL 没有和 SQL Server XML AUTO 完全对等的内置语法,但可以通过两种方式实现属性格式的XML输出:

方案1:使用内置XML函数(推荐)

MySQL 5.1及以上版本支持XMLELEMENT和XMLATTRIBUTES原生XML函数,会自动处理特殊字符转义,无需手动处理格式问题,示例代码如下:

SELECT XMLELEMENT(
    NAME `period_sid`,
    XMLATTRIBUTES(
        period_sid,
        PROJECTION_SALES,
        PROJECTION_UNITS,
        ACCOUNT_GROWTH,
        PRODUCT_GROWTH
    )
) AS xml_output
FROM 你的表名
WHERE period_sid = 1802;

执行后输出的格式和你要求的完全一致:
<period_sid period_sid="1802" PROJECTION_SALES="1595642.121" PROJECTION_UNITS="18834.75725" ACCOUNT_GROWTH="0" PRODUCT_GROWTH="0"/>

如果需要批量导出多行记录的XML节点,可以用GROUP_CONCAT拼接结果:

SELECT GROUP_CONCAT(
    XMLELEMENT(
        NAME `period_sid`,
        XMLATTRIBUTES(
            period_sid,
            PROJECTION_SALES,
            PROJECTION_UNITS,
            ACCOUNT_GROWTH,
            PRODUCT_GROWTH
        )
    ) SEPARATOR '\n'
) AS xml_output
FROM 你的表名;

方案2:手动字符串拼接

如果有特殊定制需求,也可以手动拼接字符串实现,注意用QUOTE函数处理值的引号和基础转义:

SELECT CONCAT(
    '<period_sid ',
    'period_sid=', QUOTE(period_sid), ' ',
    'PROJECTION_SALES=', QUOTE(PROJECTION_SALES), ' ',
    'PROJECTION_UNITS=', QUOTE(PROJECTION_UNITS), ' ',
    'ACCOUNT_GROWTH=', QUOTE(ACCOUNT_GROWTH), ' ',
    'PRODUCT_GROWTH=', QUOTE(PRODUCT_GROWTH),
    '/>'
) AS xml_output
FROM 你的表名;

如果字段值包含&、<、>等XML特殊字符,需要额外用REPLACE函数转义后再拼接:

  • & 替换为 &amp;
  • < 替换为 &lt;
  • > 替换为 &gt;
  • " 替换为 &quot;
  • ' 替换为 &apos;

如果需要输出完整XML文档,在结果前后补充XML声明和根节点即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 18:36:05