gpt4 book ai didi

sql-server - 如何从包含 xml 命名空间的 XML 列中获取数据 (SQL Server 2005)

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

我在谷歌上搜索了很多,但没有成功。我无法使用 sp_OAGetProperty 从 XML 列中检索数据,这些数据来自 Web 服务。

XML 列包含..

<ArrayOfCustomerInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/">
<Customer CustCode="001">
<CustName>John</CustName>
<Queues>
<Q>
<No>10</No>
<Line>1</Line>
</Q>
</Queues>
</Customer>
</ArrayOfCustomerInfo>

当我执行以下语句时,我得到了 NULL

(但如果我删除所有 XML 命名空间 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3. org/2001/XMLSchema"xmlns="http://tempuri.org/")

SELECT a.b.value('@CustCode','varchar(4)') AS Code
,a.b.value('CustName[1]','varchar(20)') AS Name
,c.d.value('No[1]','int') AS QNo
,c.d.value('(Line)[1]','int') AS QLine
FROM PGHRMS_Employees x
CROSS APPLY x.data.nodes('/ArrayOfCustomerInfo/Customer') AS a(b)
CROSS APPLY a.b.nodes('Queues/Q') AS c(d)

请给我一些建议。我必须用 SQL SERVER 来实现 :(

如果有人想复制它,我将脚本粘贴到:http://pastebin.com/ueZGidyL

提前致谢!!!

最佳答案

试试这个:

;WITH XMLNAMESPACES(DEFAULT 'http://tempuri.org/')
SELECT
Code = XC1.value('@CustCode', 'varchar(4)'),
Name = XC1.value('CustName[1]', 'varchar(20)'),
QNo = XC2.value('No[1]', 'int') ,
QLine = XC2.value('(Line)[1]','int')
FROM
PGHRMS_Employees
CROSS APPLY
XmlContent.nodes('/ArrayOfCustomerInfo/Customer') AS XT1(XC1)
CROSS APPLY
XC1.nodes('Queues/Q') AS XT2(XC2)

随着WITH XMLNAMESPACES构造,您可以定义一些 XML 命名空间以供以下 T-SQL 语句使用 - 默认或带前缀的命名空间。

关于sql-server - 如何从包含 xml 命名空间的 XML 列中获取数据 (SQL Server 2005),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32201697/

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