如何读取 SQL 服务器中的 XML 重复节点
How to read XML repeated nodes in SQL Server
我正在使用以下代码读取 OrderId,但它只显示第一个
DECLARE @InputXMLHandle int
Declare @RequestXml xml = '<Request><OrderStatus>
<OrderId>RSIN10095</OrderId>
<OrderId>RSIN10096</OrderId>
</OrderStatus>
</Request>'
EXEC sp_xml_preparedocument @InputXMLHandle OUTPUT, @RequestXml
Select *
From OPENXML(@InputXMLHandle,'/Request/OrderStatus')
WITH
(
OrderId varchar(50) 'OrderId'
)
使用完整路径
DECLARE @InputXMLHandle int
Declare @RequestXml xml = '<Request><OrderStatus>
<OrderId>RSIN10095</OrderId>
<OrderId>RSIN10096</OrderId>
</OrderStatus>
</Request>'
EXEC sp_xml_preparedocument @InputXMLHandle OUTPUT, @RequestXml
Select *
From OPENXML(@InputXMLHandle,'/Request/OrderStatus/OrderId')
WITH
(
OrderId varchar(50) '.'
)
或使用xml方法
Declare @RequestXml xml = '<Request><OrderStatus>
<OrderId>RSIN10095</OrderId>
<OrderId>RSIN10096</OrderId>
</OrderStatus>
</Request>';
select t.n.value('.[1]', 'varchar(50)') id
from @RequestXml.nodes('/Request/OrderStatus/OrderId') t(n);
我正在使用以下代码读取 OrderId,但它只显示第一个
DECLARE @InputXMLHandle int
Declare @RequestXml xml = '<Request><OrderStatus>
<OrderId>RSIN10095</OrderId>
<OrderId>RSIN10096</OrderId>
</OrderStatus>
</Request>'
EXEC sp_xml_preparedocument @InputXMLHandle OUTPUT, @RequestXml
Select *
From OPENXML(@InputXMLHandle,'/Request/OrderStatus')
WITH
(
OrderId varchar(50) 'OrderId'
)
使用完整路径
DECLARE @InputXMLHandle int
Declare @RequestXml xml = '<Request><OrderStatus>
<OrderId>RSIN10095</OrderId>
<OrderId>RSIN10096</OrderId>
</OrderStatus>
</Request>'
EXEC sp_xml_preparedocument @InputXMLHandle OUTPUT, @RequestXml
Select *
From OPENXML(@InputXMLHandle,'/Request/OrderStatus/OrderId')
WITH
(
OrderId varchar(50) '.'
)
或使用xml方法
Declare @RequestXml xml = '<Request><OrderStatus>
<OrderId>RSIN10095</OrderId>
<OrderId>RSIN10096</OrderId>
</OrderStatus>
</Request>';
select t.n.value('.[1]', 'varchar(50)') id
from @RequestXml.nodes('/Request/OrderStatus/OrderId') t(n);