You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SQL中将嵌套XML列转换为表格格式?

拆解XML列至关系型表格的T-SQL实现

DDL及示例数据

-- DDL及示例数据初始化
DECLARE @tbl TABLE (OwnerID INT IDENTITY PRIMARY KEY, House XML);

INSERT @tbl (House) 
VALUES (N'<House>
              <Room id="111111" type="b" name="Master Bedroom" formatstring="">
                  <Closest>3</Closest>
                  <Windows>4</Windows>
              </Room>
              <Room id="222222" type="a" name="Guest Bedroom" formatstring="">
                  <Closest>1</Closest>
                  <Windows>2</Windows>
              </Room>
              <Room id="333333" type="a" name="Bathroom" formatstring="">
                  <Closest>0</Closest>
                  <Windows>2</Windows>
              </Room>
              <Room id="444414" type="b" name="Kitchen" formatstring="">
                  <Closest>1</Closest>
                  <Windows>0</Windows>
              </Room>
         </House>');

待完善的尝试代码

...

期望输出

OwnerIDidtypenameformatstringClosestWindows
1111111bMaster Bedroom34
1222222aGuest Bedroom12
1333333aBathroom02
1444414bKitchen10

SQL Server版本

执行SELECT @@VERSION;返回:

Microsoft SQL Server 2022 (RTM-CU5) (KB5026806) - 16.0.4045.3 (X64)   
May 26 2023 12:52:08   
Copyright (C) 2022 Microsoft Corporation  
Developer Edition (64-bit) on Windows 10 Pro 10.0 <X64> (Build 19045: ) 

实现代码

利用SQL Server的XML原生支持,通过nodes()方法拆分XML节点,value()提取属性与子节点值:

SELECT 
    t.OwnerID,
    room.value('@id', 'VARCHAR(20)') AS id,
    room.value('@type', 'CHAR(1)') AS type,
    room.value('@name', 'VARCHAR(50)') AS name,
    room.value('@formatstring', 'VARCHAR(50)') AS formatstring,
    room.value('(Closest/text())[1]', 'INT') AS Closest,
    room.value('(Windows/text())[1]', 'INT') AS Windows
FROM @tbl t
CROSS APPLY t.House.nodes('/House/Room') AS Rooms(room);

关键说明

  • CROSS APPLY ... nodes('/House/Room'):将每个<Room>节点转换为独立行
  • @属性名:直接提取节点的属性值
  • (子节点/text())[1]:精准提取子节点的文本内容,[1]确保只返回单个值,避免因多节点导致的结果异常

执行该代码即可生成符合期望的关系型表格数据。


内容的提问来源于stack exchange,提问作者Xoom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 16:03:24