예: HIDE 지시어 지정

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

이 예제에서는 HIDE 지시문을 사용하는 방법을 보여 줍니다. 이 지시문은 쿼리에서 반환되는 범용 테이블의 행 순서를 지정하기 위한 특성을 쿼리에서 반환하려고 하지만 최종 결과 XML 문서에서 해당 특성을 반환하지 않으려는 경우에 유용합니다.

이 쿼리는 다음 XML을 생성합니다.

<ProductModel ProdModelID="19" Name="Mountain-100">
  <Summary>
    <SummaryDescription>
           <Summary> element from XML stored in CatalogDescription column
    </SummaryDescription>
  </Summary>
</ProductModel>

이 쿼리는 원하는 XML을 생성합니다. 쿼리는 열 이름에 태그 값으로 1과 2가 있는 두 열 그룹을 식별합니다.

이 쿼리는 xml 데이터 형식의 query() 메서드(xml 데이터 형식)를 사용하여 xml 형식의 CatalogDescription 열을 쿼리하여 요약 설명을 검색합니다. 또한 쿼리는 xml 데이터 형식의 value() 메서드(xml 데이터 형식)를 사용하여 CatalogDescription 열에서 ProductModelID 값을 검색합니다. 이 값은 결과 XML에는 필요하지 않지만 결과 행 집합을 정렬하는 데 필요합니다. 따라서 열 이름에는 [Summary!2!ProductModelID!HIDE]HIDE 지시문이 포함됩니다. 이 열이 SELECT 문에 포함되지 않은 경우 행 집합 [ProductModel!1!ProdModelID] 을 기준으로 정렬해야 하며 [Summary!2!SummaryDescription] 이는 xml 형식이며 ORDER BY에서 xml 형식 열을 사용할 수 없습니다. 따라서 추가 [Summary!2!ProductModelID!HIDE] 열이 추가된 다음 ORDER BY 절에 지정됩니다.

USE AdventureWorks2022;
GO
SELECT  1 as Tag,
        0 as Parent,
        ProductModelID     as [ProductModel!1!ProdModelID],
        Name               as [ProductModel!1!Name],
        NULL               as [Summary!2!ProductModelID!hide],
        NULL               as [Summary!2!SummaryDescription]
FROM    Production.ProductModel
WHERE   CatalogDescription is not null
UNION ALL
SELECT  2 as Tag,
        1 as Parent,
        ProductModelID,
        Name,
        CatalogDescription.value('
         declare namespace PD="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";
       (/PD:ProductDescription/@ProductModelID)[1]', 'int'),
        CatalogDescription.query('
         declare namespace pd="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";
         /pd:ProductDescription/pd:Summary')
FROM    Production.ProductModel
WHERE   CatalogDescription is not null
ORDER BY [ProductModel!1!ProdModelID],[Summary!2!ProductModelID!hide]
FOR XML EXPLICIT;
GO

결과는 다음과 같습니다.

<ProductModel ProdModelID="19" Name="Mountain-100">
  <Summary>
    <SummaryDescription>
      <pd:Summary xmlns:pd="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription" xmlns="">
        <p1:p xmlns:p1="http://www.w3.org/1999/xhtml">Our top-of-the-line competition mountain bike. Performance-enhancing options include the innovative HL Frame, super-smooth front suspension, and traction for all terrain. </p1:p>
      </pd:Summary>
    </SummaryDescription>
  </Summary>
</ProductModel>

참고 항목