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

SQL Server 2012中XML属性提取返回NULL问题求助

问题排查:XML提取属性返回NULL的原因及修复

首先看你提供的XML结构:根节点SqlSyncProviderScopeConfiguration只定义了xsd和xsi两个带前缀的命名空间,但根节点本身和子节点Adapter都不属于任何命名空间(没有默认命名空间声明,比如xmlns="...")。

而你的查询里错误地给SqlSyncProviderScopeConfiguration和Adapter节点加上了ns:前缀,相当于告诉SQL Server要找属于http://www.w3.org/2001/XMLSchema命名空间的节点,但实际这些节点根本不在这个命名空间里,自然匹配不到,返回NULL。

修复后的查询

你只需要移除不必要的命名空间前缀,直接查询无命名空间的节点即可:

select config_data.value('(/SqlSyncProviderScopeConfiguration/Adapter/@Name)[1]','varchar(100)')
from tableA

补充说明

如果你的XML后续可能添加默认命名空间(比如xmlns="http://some-namespace"),那时候才需要用xmlnamespaces来声明默认命名空间,示例如下:

;with xmlnamespaces(default 'http://some-namespace')
select config_data.value('(/SqlSyncProviderScopeConfiguration/Adapter/@Name)[1]','varchar(100)')
from tableA

但就你当前提供的XML来说,完全不需要声明xsd和xsi的命名空间,因为你查询的节点和这两个命名空间无关。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 16:12:28