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

如何用SQL从XML列提取Woninglabel的Min和Max属性值

从XML列提取多个Woninglabel节点的属性值

假设你的XML结构类似这样:

return (<Advertentie>
  <Filter>...</Filter>
  <Woninglabels>
    <Woninglabel Id="1" Min="10" Max="20"/>
)
<Woninglabel Id="2" Min="5" Max="15"/>

直接用.value()方法只能返回匹配路径的第一个节点的值,要提取所有Woninglabel节点的属性,必须结合.nodes()方法先将每个节点拆分为独立行,再逐个提取属性。

正确SQL语句示例

假设你的表名为Advertenties,XML列名为XmlData,可以用以下语句:

SELECT
    Woninglabel.value('@Id', 'INT') AS WoninglabelId,
    Woninglabel.value('@Min', 'DECIMAL(18,2)') AS MinWaarde,
    Woninglabel.value('@Max', 'DECIMAL(18,2)') AS MaxWaarde
FROM
    Advertenties
CROSS APPLY
    XmlData.nodes('/Advertentie/Woninglabels/Woninglabel') AS WL(Woninglabel)

关键说明

  • .nodes('/Advertentie/Woninglabels/Woninglabel'):定位到所有Woninglabel节点,生成包含每个节点的行集
  • Woninglabel.value('@属性名', '数据类型'):从每个拆分出的节点中提取对应属性值,数据类型可根据实际存储的值调整(比如INT、FLOAT等)
  • 使用CROSS APPLY将原表行与拆分出的节点行关联,确保每个节点对应一行结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 19:57:04