Share via


işlev (XQuery) yerleştirin.

Işlenmekte olan maddelerin içerik maddenin sırası içindeki konumunu gösteren bir tamsayı değer döndürür.

fn:position() as xs:integer

Remarks

Içinde SQL Server, fn:position() yalnızca bir içerik bağımlı yüklemi içeriğinde kullanılabilir.Özellikle, yalnızca köşeli ayraçlar ([]) içinde kullanılabilir .Comparing karşı bu işlev, statik türde kesmesi sırasında önem azaltmaz.

Örnekler

Bu konu, çeşitli içinde depolanan XML örnekleri karşı XQuery örnekler sağlar. XML türü sütunAdventureWorks Veritabanı. Konusuna genel bir bakış bu sütunların her biri için bkz: XML veri türü temsili AdventureWorks veritabanındaki.

C.Ilk iki ürün özelliklerini almak için XPath XQuery işlevini kullanma

Ilk iki özellik, ilk iki alt öğeleri aşağıdaki sorgu alır <Features> Ürün modeli katalog açıklamasından öğesi. Varsa diğer özellikler, ekler bir <there-is-more/> sonucun öğesi.

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 oluşturan bir <Ürün> öğe ile Productmodelıd and ProductModelName öznitelikleri ve alt öğe döndürüldü, ürün özellikleri vardır.

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

  • EĞER deyim ekler bir <orada olduğundan daha /> Sonuç ürün kataloğuna ikiden fazla özellikleri vardır, öğeye.

  • Tüm ürün modellerinde depolanan katalog açıklamalarını olduğundan tablo, WHERE yan tümce CatalogDescriptions null olduğu satırlar'ı iptal etmek 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 AdventureWorks retail store.</p2:Description>
  </p2:Maintenance>
  <there-is-more/>
</Product> 
…