Udostępnij za pośrednictwem


Umieść funkcji (XQuery)

Zwraca wartość całkowitą, która wskazuje położenie element kontekstu w kolejności elementów aktualnie przetwarzane.

Składnia

fn:position() as xs:integer

Uwagi

W SQL Server, fn:position() mogą być używane tylko w kontekście predykat zależne od kontekstu.W szczególności go należy używać tylko wewnątrz nawiasów kwadratowych ([]).Porównanie przeciwko tej funkcja nie powoduje zmniejszenia Kardynalność podczas wnioskowanie statycznych.

Przykłady

W tym temacie przedstawiono przykłady XQuery przeciwko wystąpień XML, które są przechowywane w różnych xml Wpisz kolumn w AdventureWorks2008R2 bazy danych.Przegląd tych kolumn, zobacz XML reprezentacji typu danych w bazie danych AdventureWorks2008R2.

A.Używanie position() funkcja XQuery do pobierania pierwszej funkcje produktu

Następująca kwerenda pobiera pierwsze dwie funkcje pierwsze dwa elementy podrzędność <Features> element z Opis wykazu modelu produktu.Jeśli istnieje więcej funkcji, dodaje on <there-is-more/> element do wyników.

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;

Poniższe z poprzedniej kwerendy:

  • Nazw słowo kluczowe w XQuery prologu definiuje prefiks obszaru nazw, który jest używany w treści kwerendy.

  • Treść kwerendy konstrukcje XML, który ma <produktu> element z ProductModelID i ProductModelName atrybuty i został zwrócony jako elementy podrzędność funkcji produktu.

  • Position() funkcja jest używana w predykacie, aby ustalić położenie <funkcje> element podrzędność w kontekście.Jeśli funkcja pierwszym lub drugim, jest zwracana.

  • Dodaje instrukcja Jeżeli <tam jest więcej /> element do wyniku, jeśli istnieje więcej niż dwie funkcje w katalogu produktów.

  • Ponieważ nie wszystkie modele produktów ich opisy katalogu przechowywane w tabela, klauzula WHERE jest używana do odrzucić wierszy, gdzie CatalogDescriptions jest ZEROWY.

Jest to wynik częściowy:

<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>

Zobacz także

Odwołanie