Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gibt einen ganzzahligen Wert zurück, der die Position des Kontextelements in der Sequenz der Elemente angibt, die zurzeit verarbeitet werden.
Syntax
fn:position() as xs:integer
Hinweise
In SQL Server kann fn:position() nur im Kontext eines kontextabhängigen Prädikats verwendet werden. Die Funktion kann insbesondere nur innerhalb von eckigen Klammern ([ ]) verwendet werden. Das Vergleichen mit dieser Funktion verringert nicht die Kardinalität während des statischen Typrückschlusses.
Beispiele
Dieses Thema stellt XQuery-Beispiele für XML-Instanzen bereit, die in verschiedenen Spalten des xml-Typs in der AdventureWorks-Datenbank gespeichert werden. Einen Überblick über diese Spalten bietet Darstellung des xml-Datentyps in der AdventureWorks-Datenbank.
A. Verwenden der position()-Funktion von XQuery zum Abrufen der ersten beiden Produktfeatures
Die folgende Abfrage ruft die beiden ersten Features, die ersten beiden untergeordneten Elemente des <Features>-Elements, aus der Produktmodell-Katalogbeschreibung ab. Wenn mehr Features vorhanden sind, wird dem Ergebnis ein <there-is-more/>-Element hinzugefügt.
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
Beachten Sie hinsichtlich der vorherigen Abfrage Folgendes:
- Das namespace-Schlüsselwort im XQuery-Prolog definiert ein Namespacepräfix , das im Abfragetext verwendet wird.
- Der Abfragetext erstellt XML, das ein <Product>-Element mit den ProductModelID- und ProductModelName-Attributen besitzt; die Produktfeatures werden als untergeordnete Elemente zurückgegeben.
- Die position()-Funktion wird im Prädikat zum Bestimmen der Position des untergeordneten <Features>-Elements im Kontext verwendet. Wenn es sich dabei um das erste oder zweite Feature handelt, wird dieses zurückgegeben.
- Die IF-Anweisung fügt dem Ergebnis ein <there-is-more/>-Element hinzu, wenn mehr als zwei Features im Produktkatalog vorhanden sind.
- Da nicht für alle Produktmodelle Katalogbeschreibungen in der Tabelle gespeichert sind, wird die WHERE-Klausel zum Verwerfen von Zeilen verwendet, in denen CatalogDescriptions den Wert NULL besitzt.
Dies ist das Teilergebnis:
<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>
…
Siehe auch
Verweis
XQuery-Funktionen für den xml-Datentyp