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

SQL Server中如何用nodes()方法替代OPENXML实现相同操作?

使用nodes()替代OPENXML解析XML数据(SQL Server)

完整替代代码

DECLARE @MyXML XML = '<data><Row><Name>Name A</Name><Type>T1</Type></Row><Row><Name>Name B</Name><Type>T2</Type></Row></Data>'

SELECT
    aaa.value('(Name)[1]', 'NVARCHAR(100)') AS Value,
    aaa.value('(Type)[1]', 'NVARCHAR(100)') AS Type
INTO #temp1
FROM @MyXML.nodes('/Data/Row') AS T(aaa)

-- 验证结果
SELECT * FROM #temp1

代码说明

  • @MyXML.nodes('/Data/Row') AS T(aaa):将XML中所有匹配/Data/Row路径的节点拆分为独立行,aaa代表每个Row节点的引用。
  • aaa.value('(Name)[1]', 'NVARCHAR(100)'):通过XPath路径(Name)[1]定位当前Row节点下的第一个<Name>子节点,提取其文本值并转换为指定数据类型;Type字段的提取逻辑完全一致。
  • 最终生成的#temp1临时表会包含两行数据,与预期结果一致:
    Value   | Type
    --------|-----
    Name A  | T1
    Name B  | T2
    

对比原OPENXML代码的优势

  • 无需调用sp_xml_preparedocument和sp_xml_removedocument管理XML文档句柄,避免手动释放资源的繁琐操作。
  • 代码更简洁直观,直接基于XML变量解析节点,性能和可读性更优。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 06:10:05