適用於:SQL Server
Azure SQL Database
Azure SQL 受控執行個體
Microsoft Fabric 中的 SQL 資料庫
AUTO 模式可根據查詢決定傳回的 XML 圖形。 在判定元素應如何巢狀排列時,AUTO 模式的啟發式方法會比較相鄰資料列中各資料行的值。 比較除 ntext、text、image 和 xml 以外的所有類型的資料行。 系統會比較 (n)varchar(max) 和 varbinary(max) 類型的資料行。
下列範例說明用來決定產生之 XML 形式的 AUTO 模式啟發法:
SELECT T1.Id, T2.Id, T1.Name
FROM T1, T2
WHERE Col1 = 1 /* actual predicate goes here*/
ORDER BY T1.Id
FOR XML AUTO;
若要判斷新 <T1> 元素的起始位置,若未指定資料表 T1 上的索引鍵,則會比較 T1 中除 ntext、text、image 和 xml 以外的所有資料行值。 接下來,假設 Name 資料行為 nvarchar(40),且 SELECT 陳述式會傳回以下資料列集:
T1.Id T1.Name T2.Id
-----------------------
1 Andrew 2
1 Andrew 3
1 Nancy 4
AUTO 模式的啟發式方法會比較資料表 T1 以及 Id 和 Name 欄位中的所有值。 前兩個資料列的 Id 和 Name 資料行具有相同的值。 因此,將具有兩個 <T1> 子元素的單一 <T2> 元素新增至結果。
以下是傳回的 XML:
<T1 Id="1" Name="Andrew">
<T2 Id="2" />
<T2 Id="3" />
</T1>
<T1 Id="1" Name="Nancy" >
<T2 Id="4" />
</T>
現在假設 Name 資料行屬於 text 類型。 AUTO 模式的啟發式方法不會比較此類型的值。 相反,它會假設值不相同。 此模式會產生 XML,如下列輸出所示:
<T1 Id="1" Name="Andrew" >
<T2 Id="2" />
</T1>
<T1 Id="1" Name="Andrew" >
<T2 Id="3" />
</T1>
<T1 Id="1" Name="Nancy" >
<T2 Id="4" />
</T1>