用來形成傳回之 XML 的 AUTO 模式啟發學習法

適用於: SQL Server Azure SQL 資料庫 不支援。 Azure Synapse Analytics 不支援。 Analytics Platform System (PDW)

AUTO 模式可根據查詢決定傳回的 XML 圖形。 在決定如何巢狀元素時,AUTO 模式啟發學習法會比較相鄰資料列中的資料行值。 比較除 ntexttextimagexml 以外的所有類型的資料行。 (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 上的索引鍵,會比較除 ntexttextimagexml 以外的所有資料行值。 接下來,假設 Name 資料行為 nvarchar(40),且 SELECT 陳述式會傳回以下資料列集:

T1.Id  T1.Name  T2.Id
-----------------------
1       Andrew    2
1       Andrew    3
1       Nancy     4

AUTO 模式啟發學習法會比較資料表 T1、Id 和 Name 資料行的所有值。 前兩個資料列的 IdName 資料行具有相同的值。 因此,將具有兩個 <T2> 子元素的單一 <T1> 元素新增至結果。

以下是傳回的 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>

另請參閱