Share via


İşlev (XQuery) konumlandırın

İçerik konumunu belirten bir tamsayı değer döndürür öğe dizisi içinde öğes şu anda işleniyor.

Sözdizimi

fn:position() as xs:integer

Açıklamalar

De SQL Server, fn:position() yalnızca içerik bağımlı yüklemi içeriğinde kullanılabilir.Özellikle, bu yalnızca köşeli ayraçlar ([]) içinde kullanılabilir.Bu işlev karşı Karşılaştırma sırasında statik tür kesmesi kardinalite azaltmaz.

Örnekler

Bu konuda çeşitli içinde depolanan xml örnekleri karşı XQuery örnekler sağlar xml sütunları yazın AdventureWorks2008R2 veritabanı.Bir bakış bu sütunların her biri için bkz: XML veri türü temsili AdventureWorks2008R2 veritabanında.

A.Position() XQuery kullanarak işlev ilk iki ürün özelliklerini almak için

İlk iki özellikleri, ilk iki alt öğelerini aşağıdaki sorgu alır <Features> öğesinden, ürün modeli katalog açıklamasını.Ekler olup olmadığını daha fazla özellik, bir <there-is-more/> öğesi için sonuç.

SELECT CatalogDescription.query('
     declare namespace pd="https://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;

Önceki sorgudan aşağıdakilere dikkat edin:

  • The namespace keyword in the XQuery Prolog defines a namespace prefix that is used in the query body.

  • Sorgu gövde içeren bir xml yapıları bir <Ürün> öğesi ile ProductModelID ve ProductModelName öznitelikleri ve alt öğeleri döndürülen ürün özellikleri vardır.

  • The position() function is used in the predicate to determine the position of the <Features> child element in context.Birinci veya ikinci özelliği ise döndürülür.

  • Eğer deyim ekler bir <orada olduğundan daha /> öğesine sonucu, ikiden fazla özellik ürün kataloğu.

  • Çünkü katalog açıklamalarını depolanan tüm Ürün modellerinde sahip tablo, where yan tümce tümce tümce, burada CatalogDescriptions, boş satırlar atmak için kullanılır.

Bu kısmi bir sonucudur:

<Product ProductModelID="19" ProductModelName="Mountain 100">

<p1:Warranty xmlns:p1="https://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="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain">

<p2:NoOfYears>10</p2:NoOfYears>

<p2:Description>maintenance contact available through your dealer or

any Adventure Works retail store.</p2:Description>

</p2:Maintenance>

<there-is-more/>

</Product>