SQL SERVER 解析XML
DECLARE @xml XML = '
<Customers><Customer CustomerID="C001"><Name>王五</Name><Contacts><Phone>13800138000</Phone><Email>wangwu@example.com</Email></Contacts><Orders><Order><OrderID>2001</OrderID><Amount>3000.00</Amount></Order><Order><OrderID>2002</OrderID><Amount>1500.00</Amount></Order></Orders></Customer>
</Customers>'-- 解析嵌套结构
SELECT CustomerNode.value('@CustomerID', 'NVARCHAR(20)') AS CustomerID,CustomerNode.value('(Name)[1]', 'NVARCHAR(50)') AS CustomerName,CustomerNode.value('(Contacts/Phone)[1]', 'NVARCHAR(20)') AS Phone,CustomerNode.value('(Contacts/Email)[1]', 'NVARCHAR(100)') AS Email,OrderNode.value('(OrderID)[1]', 'INT') AS OrderID,OrderNode.value('(Amount)[1]', 'DECIMAL(10,2)') AS Amount
FROM @xml.nodes('/Customers/Customer') AS T(CustomerNode)
CROSS APPLY CustomerNode.nodes('Orders/Order') AS O(OrderNode)
这段SQL代码演示了如何解析XML格式的嵌套客户数据。通过XQuery方法,代码从XML变量中提取客户信息(ID、姓名、电话、邮箱)以及每个客户的多个订单明细(订单ID、金额)。使用nodes()方法分别定位客户节点和订单节点,再通过value()方法提取具体字段值,最后使用CROSS APPLY将客户信息与订单明细关联输出。这种技术适用于处理包含多层嵌套结构的XML数据。