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

相关推荐
Hui Baby2 天前
回顾-springboot自定义xml
xml·java·spring boot
开始了码3 天前
XML文件介绍和QT相关操作
xml·qt
Andy工程师3 天前
logback-spring.xml优先级更高
xml·spring·logback
小江村儿的文杰3 天前
UE4在MacOS上将Commit.gitdeps.xml设为Git LFS文件的潜在弊端
xml·ue4
humstone3 天前
基于xml 和sql 实现自定义报表查询
xml·数据库·sql
就叫飞六吧4 天前
考古spring.xml注册bean无法扫描目录问题
xml·java·spring
Star abuse4 天前
XML转YOLO格式数据集教程
xml·人工智能·yolo
gAlAxy...5 天前
MyBatis 核心配置文件 SqlMapConfig.xml 全解析
xml·mybatis
编程修仙6 天前
第十一篇 Spring事务
xml·java·数据库·spring
金士顿6 天前
Ethercat耦合器添加的IO导出xml 初始化IO参数
android·xml·java