반환된 XML 셰이핑의 AUTO 모드 추론

적용 대상: SQL Server Azure SQL Database Not supported. Azure Synapse Analytics Not supported. Analytics Platform System(PDW)

AUTO 모드는 쿼리에 따라 반환된 XML의 모양을 결정합니다. 요소 중첩 방법을 결정할 때 AUTO 모드 추론은 인접한 행의 열 값을 비교합니다. ntext, text, imagexml 제외한 모든 형식의 열이 비교됩니다. (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, 텍스트, 이미지xml을 제외한 T1의 모든 열 값을 비교합니다. 다음으로 Name 열이 nvarchar(40)이고 SELECT 문이 이 행 집합을 반환한다고 가정합니다.

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

AUTO 모드 추론은 T1 테이블, ID 및 이름 열의 모든 값을 비교합니다. 처음 두 행의 값 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>

참고 항목