gpt4 book ai didi

sql - 在 SQL 中从 XML 中选择值

转载 作者:数据小太阳 更新时间:2023-10-29 02:20:32 25 4
gpt4 key购买 nike

我需要从 XML 文档中选择值。这些值存储为子节点,如下所示:

   <customers>
<customer>
<kunnr>1</kunnr>
<kdgrp>2</kdgrp>
</customer>
<customer>
<kunnr>2</kunnr>
<kdgrp>2</kdgrp>
</customer>
</customers>

我需要为每个客户节点选择 kunnr 和 kdgrp 的值。我希望得到这样的结果:

kunnr       kdgrp
1 2
2 2

到目前为止我尝试了什么:

SELECT  @xml.query('/customers/customer/kunnr') AS KUNNR,
@xml.query('/customers/customer/kdgrp') AS KDGRP

这会导致一行和两列包含 XML:

KUNNR                                     KDGRP
<kunnr>1</kunnr><kunnr>2</kunnr> <kdgrp>2</kdgrp><kdgrp>2</kdgrp>

另一个尝试:

SELECT  C.value('/kunnr/text()','nvarchar(10)') as KUNNR,
C.value('/kdgrp/text()','nvarchar(10)') as KDGRP
from @xml.nodes('/customers/customer') AS T(C);

这导致了以下错误消息:

XQuery [value()]: 'value()' requires a singleton (or empty sequence), found operand of type 'xdt:untypedAtomic *'

最佳答案

也许是这样的:

DECLARE @xml XML
SET @xml='<customers>
<customer>
<kunnr>1</kunnr>
<kdgrp>2</kdgrp>
</customer>
<customer>
<kunnr>2</kunnr>
<kdgrp>2</kdgrp>
</customer>
</customers>'

然后是这样的查询:

SELECT
c.value('kunnr[1]', 'nvarchar(10)') AS kunnr,
c.value('kdgrp[1]', 'nvarchar(10)') AS kdgrp
FROM
@xml.nodes('//customers/customer') as t(c)

这会给你这个结果:

kunnr  kdgrp
1 2
2 2

关于sql - 在 SQL 中从 XML 中选择值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26989254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com