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

SQL Server中使用nodes()方法拆分XML:单查询如何获取多字段?

解决SQL Server中XML节点拆分同时获取属性和子节点值的问题

嘿,我来帮你搞定这个XML拆分的问题!你原来的查询只拿到了customer节点的id属性,要同时获取NAME子节点的内容,只需要在SELECT语句里多加一个.value()调用就可以了。

先提个小细节:你的XML里<Customer>标签开头是大写C,结尾</customer>是小写c,SQL Server的XQuery是区分大小写的,写节点路径的时候要保持一致(最好统一XML标签的大小写,避免后续踩坑)。

下面是完整的可运行查询示例:

DECLARE @xml XML = '<abc> 
    <item> 
        <Customer id="12345" age="26"> 
            <NAME>Alex</NAME> 
        </Customer> 
    </item> 
</abc>';

SELECT 
    doc.col.value('@id','INT') AS CustomerID,
    doc.col.value('NAME[1]','VARCHAR(50)') AS CustomerName
FROM @xml.nodes('/abc/item/Customer') doc(col);

关键说明:

  • @id表示取当前Customer节点的id属性值
  • NAME[1]表示取当前节点下第一个NAME子节点的文本内容,加上[1]是因为SQL Server要求明确指定节点位置(哪怕只有一个子节点,也需要这么写来避免潜在的多节点匹配问题)
  • 一定要保证XML标签和XQuery路径的大小写一致,不然会返回NULL哦

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:46:22