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

SQL Server中XML类型列的XPATH查询:提取EPS节点value属性

提取TEST表XML列中EPS节点的value属性数据

嘿,我来帮你搞定这个XML数据提取的需求!假设你用的是SQL Server(毕竟它原生支持xml数据类型和XPath查询),这里有两种实用的写法:

方法1:只提取value属性

如果只需要每个EPS节点的value值,用这个查询就够了:

SELECT 
    eps_node.value('@value', 'VARCHAR(255)') AS EPS_Value
FROM 
    TEST
CROSS APPLY 
    info.nodes('/RootEPS/EPS') AS eps(eps_node)

简单解释下代码逻辑:

  • info.nodes('/RootEPS/EPS'):把info列里的XML数据,按照/RootEPS/EPS这个XPath路径拆分成一个个独立的EPS节点
  • CROSS APPLY:把拆分出来的每个EPS节点和原表的行做关联,保证每个节点都能生成单独的一行数据
  • eps_node.value('@value', 'VARCHAR(255)'):从拆分后的节点里提取value属性的值,这里用VARCHAR(255)是通用类型,你可以根据实际数据长度调整(比如邮箱用VARCHAR(100),地址用VARCHAR(500))

方法2:同时提取key和value属性(可选)

要是你还想对应拿到每个EPS节点的key属性,用这个查询就行:

SELECT 
    eps_node.value('@key', 'VARCHAR(255)') AS EPS_Key,
    eps_node.value('@value', 'VARCHAR(255)') AS EPS_Value
FROM 
    TEST
CROSS APPLY 
    info.nodes('/RootEPS/EPS') AS eps(eps_node)

额外注意点:

你示例里的XML虽然有xmlns:xsd和xmlns:xsi命名空间,但这些并没有在EPS节点上使用,所以不需要额外处理命名空间。如果以后XML里的节点用到了命名前缀,才需要用WITH XMLNAMESPACES来声明哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:38:48