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

如何使用node()方法从指定XML提取属性,编写的查询报错如何解决

问题排查

  • XPath大小写不匹配:XML节点名称大小写敏感,实际XML根节点为小写root,SQL语句中使用了大写开头的Root,导致nodes()方法无法匹配到对应节点,触发运行错误。
  • 取值方法使用错误:query('.')仅能返回XML节点片段,无法直接提取属性的文本值,需使用value()方法读取属性内容。

解决方案

修正后的SQL语句如下:

-- 示例XML变量声明,可替换为你实际的XML变量
DECLARE @x XML = '<root><startsite personID="1" SaleID="2" regionID="3"/> </root>'

SELECT 
    T.c.value('@personID', 'INT') AS personID,
    T.c.value('@SaleID', 'INT') AS SaleID,
    T.c.value('@regionID', 'INT') AS regionID
FROM @x.nodes('/root/startsite') T(c)

代码说明

  • 修正了XPath路径的大小写错误,将/Root/startsite改为/root/startsite,和实际XML节点名称保持一致。
  • 使用value()方法读取属性:@+属性名是XPath中读取属性的标准语法,第二个参数为属性值要转换的SQL数据类型,可根据实际需求修改为VARCHAR等其他类型。
  • 若XML中存在多个startsite节点,该语句会自动逐行返回每个节点对应的三个属性值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:15:03