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

適用于:SQL Server Azure SQL Database 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 資料行的所有值。 前兩個數據列的值 Id 與 和 Name 資料行的值相同。 因此,將具有兩 <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 行屬於 文字 類型。 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>

另請參閱