返される XML を構造化する際の AUTO モード ヒューリスティック
適用対象: SQL Server
Azure SQL Database
Azure Synapse Analytics
Analytics Platform System (PDW)
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>
要素の開始位置を決定するために、ntext 型、text 型、image 型、および xml 型を除く T1 の列のすべての値が比較されます。 次に、 Name 列が nvarchar(40) 型で、SELECT ステートメントから次の行セットが返されるとします。
T1.Id T1.Name T2.Id
-----------------------
1 Andrew 2
1 Andrew 3
1 Nancy 4
AUTO モード ヒューリスティックにより、テーブル T1 のすべての値 (Id 列と Name 列) が比較されます。 最初の 2 行の Id
列および Name
列の値は同じです。 その結果、2 つの <T2>
子要素を持つ 1 つの <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>
関連項目
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示