分享方式:


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

適用於: SQL Server Azure SQL Database Not supported. Azure Synapse Analytics Not supported. 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>

另請參閱