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

相关推荐
爱敲键盘的猴子1 天前
深入理解 Spring IoC -- 基于 XML 的 Bean 配置详解
xml·java·spring
前网易架构师-高司机2 天前
带标注的羽毛球运动员,裁判,羽毛球识别数据集,识别率84.4%,2879张图,支持yolo,coco json,voc xml,文末有模型训练代码
xml·yolo·json·数据集·羽毛球·裁判
微微1笑抽了筋5 天前
xml中设置透明度
xml
Source.Liu6 天前
【Uppsala】入口模块(lib.rs)
xml·rust
Source.Liu6 天前
【Uppsala】介绍
xml·rust
Wang's Blog6 天前
AI Agent白手起家37: LangChain 输出解析器实战:文本、JSON、XML 与 Pydantic
xml·langchain·json
initialize13066 天前
Oracle数据库 binary XML data类型同步
xml·数据库
御坂嘀喵 白日焰火7 天前
LINQ之路18:LINQ to XML之导航和查询
xml·solr·linq
残月心殇 请珍惜枸7 天前
LINQ之路17:LINQ to XML之X-DOM介绍
xml·solr·linq
x173880627310 天前
XXE外部实体注入
xml·笔记