SQL SERVER 解析XML

sql 复制代码
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数据。

相关推荐
她说..11 小时前
FIND_IN_SET()方法
xml·java·spring boot
北辰当尹1 天前
xml基础
android·xml
qqqahhh4 天前
xml文件的动态化配置,导入
xml·spring·springboot
吴声子夜歌4 天前
Maven——pom.xml详解
xml·java·maven
iSee8575 天前
struts2 XML外部实体注入漏洞复现(CVE-2025-68493)
xml·安全·struts2
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ6 天前
mapper.xml中的大于等于、小于等于
xml
问水っ7 天前
Qt Creator快速入门 第三版 第17-2章 XML
xml
独断万古他化7 天前
【MyBatis 深度解析】注解操作与 XML 配置:增删改查全流程实现
xml·java·spring·mybatis
odoo中国8 天前
如何在 Odoo 19 中加载演示数据
xml·csv·odoo·odoo 19·odoo 演示数据加载
web守墓人9 天前
【前端】ikun-pptx编辑器前瞻问题五:pptx中的xml命名空间
xml·前端