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

SQL Server中查询XML文档获取带父键的ReferencesValues表格结果

从XML文档中检索ReferencesValues并关联ParentKey的SQL Server查询

需求说明

编写SQL Server查询语句,从指定XML文档中提取ReferencesValues节点的数据,以表格形式返回结果,其中ParentKey字段关联XML中<Reference>标签内的Key值。

示例XML内容

<ReferenceType>
      <Reference>
        <Key>100000000517</Key>
        <Code>AGDS</Code>
        <Label>Member GDS / OVS</Label>
      </Reference>
      <ReferencesValues>
        <Key>200000003678</Key>
        <Code>FNGDSB</Code>
        <Label>ad1</Label>
      </ReferencesValues>
      <ReferencesValues>
        <Key>200000000221</Key>
        <Code>GDS01</Code>
        <Label>ad54</Label>
      </ReferencesValues>
    </ReferenceType>

解决方案SQL语句

使用CROSS APPLY结合XML节点查询即可实现需求,示例代码如下:

DECLARE @XmlData XML = '<ReferenceType>
      <Reference>
        <Key>100000000517</Key>
        <Code>AGDS</Code>
        <Label>Member GDS / OVS</Label>
      </Reference>
      <ReferencesValues>
        <Key>200000003678</Key>
        <Code>FNGDSB</Code>
        <Label>ad1</Label>
      </ReferencesValues>
      <ReferencesValues>
        <Key>200000000221</Key>
        <Code>GDS01</Code>
        <Label>ad54</Label>
      </ReferencesValues>
    </ReferenceType>';

SELECT
    rv.value('(Key/text())[1]', 'BIGINT') AS Key,
    rv.value('(Code/text())[1]', 'VARCHAR(50)') AS Code,
    rv.value('(Label/text())[1]', 'VARCHAR(100)') AS Label,
    ref.value('(Key/text())[1]', 'BIGINT') AS ParentKey
FROM @XmlData.nodes('/ReferenceType/ReferencesValues') AS Refs(rv)
CROSS APPLY @XmlData.nodes('/ReferenceType/Reference') AS ParentRef(ref);

查询结果

Key          Code    Label  ParentKey
200000003678 FNGDSB  ad1    100000000517
200000000221 GDS01   ad54   100000000517

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 13:03:32