首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 使用 FOR XML PATH 生成自訂 XML 結構

     編輯:關於SqlServer

在 SQL Server 中,我們可以透過 FOR XML PATH 子句輕鬆產生具有自訂根節點與子節點的 XML 輸出。這對於資料交換、API 回應或報表匯出等情境非常實用。

基本語法:單一資料表產生 XML

最簡單的形式是指定子節點名稱與根節點名稱:

SELECT * 
FROM table_name 
FOR XML PATH('child'), ROOT('parent');

執行後會產生類似以下結構的 XML:

<parent>
  <child>...</child>
  <child>...</child>
</parent>

進階應用:主從表關聯查詢

當需要將主表與從表資料整合在同一個 XML 階層中時,可以使用子查詢搭配 TYPE 指示詞,將子查詢結果作為 XML 片段嵌入主查詢:

SELECT *,
    (SELECT * 
     FROM subTable 
     WHERE subTable.id = master.id
     FOR XML PATH('child'), ROOT('parent'), TYPE)
FROM master
FOR XML PATH('child'), ROOT('parent');

關鍵點說明:

  • TYPE:指示子查詢回傳 xml 型別,而非 nvarchar(max),避免雙重編碼。
  • 子查詢的 ROOT('parent') 會為從表資料建立一個包裹元素。
  • 外層查詢同樣使用 FOR XML PATH 定義主表的輸出結構。

實務建議

  • 若只需單層結構,直接在主查詢使用 FOR XML PATH('Item'), ROOT('Items') 即可。
  • 需排除特定欄位時,請改用明確的欄位清單而非 SELECT *。
  • 大量資料輸出時,考慮使用 FOR XML PATH 搭配 OFFSET/FETCH 分頁,避免單次傳輸過大。

掌握 FOR XML PATH 的靈活運用,能大幅簡化應用層的 XML 組裝邏輯,讓資料庫直接輸出符合規格的結構化文件。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved