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

使用SQL查询XML:检查指定UniqueName的CheckBox节点是否存在

问题分析与解决

你的第二个查询无结果返回,核心原因是XPath的路径匹配范围不对:

  • 第一个查询里的//Form/Page/*[@UniqueName="EthnicityandRaceGroup"],*仅匹配Page的直接子节点,而EthnicityandRaceGroup刚好是Page下的Group节点,所以能命中。
  • 但Ethnicity是CheckBox节点,属于Group的子节点,并非Page的直接子节点,因此//Form/Page/*无法匹配到它。

修正后的查询写法

写法1:递归查找Page下所有后代节点

用//替代/,表示匹配Page节点下所有层级的后代元素:

select *
from #tempLoad a with (nolock)
where a.ValueString.exist('//Form/Page//*[@UniqueName="Ethnicity"]') = 1

写法2:精确指定完整路径

如果明确节点层级结构,直接写全路径能提升查询性能:

select *
from #tempLoad a with (nolock)
where a.ValueString.exist('//Form/Page/Group/CheckBox[@UniqueName="Ethnicity"]') = 1

写法3:全局匹配指定属性

如果不需要限定在Form/Page范围内,可直接全局查找带目标属性值的节点:

select *
from #tempLoad a with (nolock)
where a.ValueString.exist('//*[@UniqueName="Ethnicity"]') = 1

以上三种写法均可正确返回包含目标CheckBox节点的记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 19:35:23