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

SQL Server中跨不同父元素按值查询XML元素的方法

通用解决方案:使用XQuery通配符匹配任意父元素

直接利用SQL Server的XQuery功能,通过通配符节点选择跳过不确定的父元素类型,一次性定位到目标<Name>和<Value>元素,不需要为每种类型单独写查询。

核心查询语句

SELECT 
    XmlData.value('(//*[Name/text()="Look for this name"]/Value/text())[1]', 'nvarchar(max)') AS TargetValue
FROM 
    YourTableName
WHERE 
    XmlData.exist('//*[Name/text()="Look for this name"]') = 1;

语句说明

  • //*:匹配XML中任意层级的所有元素,不管父元素是TypeOneItem还是其他任意类型,都能覆盖到
  • [Name/text()="Look for this name"]:筛选出包含指定<Name>值的元素
  • /Value/text():提取该元素下对应的<Value>文本内容
  • [1]:确保只返回第一个匹配的结果(如果有多个同名<Name>,可根据需求调整)
  • exist()函数:提前过滤掉没有目标数据的行,提升查询效率

扩展场景:提取多个匹配结果

如果同一行XML中有多个符合条件的<Name>元素,要返回所有匹配的<Value>,可以改用nodes()方法拆分多行:

SELECT 
    n.value('(Value/text())[1]', 'nvarchar(max)') AS TargetValue
FROM 
    YourTableName
CROSS APPLY 
    XmlData.nodes('//*[Name/text()="Look for this name"]') AS t(n);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 06:00:53