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数据。

相关推荐
2301_818732062 天前
项目启动报错,错误指向xml 已解决
xml·java·数据库·后端·springboot
csdn2015_3 天前
generatorConfig.xml 配置 Controller、Service 完整教程
xml·mybatis
特立独行的猫a3 天前
从XML到Compose的UI变革:现代(2026)Android开发指南
android·xml·ui·compose·jetpack
spencer_tseng4 天前
Stream not available [SysDictDataMapper.xml]
xml·java
qq_297574674 天前
MySQL迁移到瀚高数据库 常用转换函数对照表(附XML示例,直接复用)
xml·数据库·mysql
好好研究5 天前
SpringBoot整合SpringMVC
xml·java·spring boot·后端·mvc
从此不归路6 天前
Qt5 进阶【12】JSON/XML 数据协议处理:与后端/配置文件的对接
xml·开发语言·c++·qt·json
方芯半导体7 天前
EtherCAT “通信 + 控制“ 的全国产化控制方案,ESC芯片(FCE1323)与国产MCU芯片功能板解析
xml·网络·单片机·嵌入式硬件·网络协议·机器人·自动化
好好研究7 天前
总结SSM设置欢迎页的方式
xml·java·后端·mvc
R-sz8 天前
mybatis的XML,如何多值匹配,支持单值(=)和多值(IN)查询
xml·mybatis