문서를 영문으로 보려면 영문 확인란을 선택하세요. 마우스 포인터를 텍스트 위로 이동시켜 팝업 창에서 영문 텍스트를 표시할 수도 있습니다.
번역
영문

position 함수(XQuery)

현재 처리 중인 항목의 시퀀스 내에서 컨텍스트 항목의 위치를 나타내는 정수 값을 반환합니다.

fn:position() as xs:integer

SQL Server에서 fn:position()은 상황별 조건자 컨텍스트에서만 사용할 수 있습니다. 특히 사용 시 대괄호([ ])로 묶어야 합니다. 이 함수와 비교하면 정적 유형 유추 중에 카디널리티가 감소하지 않습니다.

이 항목에서는 AdventureWorks2012 데이터베이스의 다양한 xml 유형 열에 저장된 XML 인스턴스에 대한 XQuery 예를 제공합니다.

1.position() XQuery 함수를 사용하여 처음 두 개 제품 기능 검색

다음 쿼리는 제품 모델 카탈로그 설명에서 처음 두 개 기능, 즉 <Features> 요소의 처음 두 개 자식 요소를 검색합니다. 추가 기능이 있을 경우 <there-is-more/> 요소를 결과에 추가합니다.

SELECT CatalogDescription.query('
     declare namespace pd="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";
     <Product> 
          { /pd:ProductDescription/@ProductModelID }
          { /pd:ProductDescription/@ProductModelName } 
          {
            for $f in /pd:ProductDescription/pd:Features/*[position()<=2]
            return
            $f 
          }
          {
            if (count(/pd:ProductDescription/pd:Features/*) > 2)
            then <there-is-more/>
            else ()
          } 
     </Product>        
') as x
FROM Production.ProductModel
WHERE CatalogDescription is not null

이전 쿼리에서 다음을 유의하십시오.

  • XQuery 프롤로그에서 namespace 키워드는 쿼리 본문에 사용된 네임스페이스 접두사를 정의합니다.

  • 쿼리 본문은 ProductModelIDProductModelName 특성이 있는 <Product> 요소와 자식 요소로 반환된 제품 기능이 있는 XML을 생성합니다.

  • position() 함수는 조건자에 사용되어 컨텍스트에서 <Features> 자식 요소 위치를 결정합니다. 이것이 첫 번째 기능이거나 두 번째 기능인 경우 반환됩니다.

  • 제품 카탈로그에 3개 이상의 기능이 있는 경우 IF 문이 <there-is-more/> 요소를 결과에 추가합니다.

  • 일부 제품 모델만 해당 카탈로그 설명이 테이블에 저장되어 있으므로 WHERE 절을 사용하여 CatalogDescriptions가 NULL인 행을 무시합니다.

다음은 결과의 일부입니다.

<Product ProductModelID="19" ProductModelName="Mountain 100">
  <p1:Warranty xmlns:p1="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain">
    <p1:WarrantyPeriod>3 year</p1:WarrantyPeriod>
    <p1:Description>parts and labor</p1:Description>
  </p1:Warranty>
  <p2:Maintenance xmlns:p2="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain">
    <p2:NoOfYears>10</p2:NoOfYears>
    <p2:Description>maintenance contact available through your dealer or
                    any AdventureWorks retail store.</p2:Description>
  </p2:Maintenance>
  <there-is-more/>
</Product> 
…

커뮤니티 추가 항목

추가
표시: