Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Returnerar ett heltalsvärde som anger positionen för kontextobjektet i sekvensen av objekt som bearbetas för närvarande.
Syntax
fn:position() as xs:integer
Anmärkningar
I SQL Server kan fn:position() endast användas i kontexten för ett kontextberoende predikat. Mer specifikt kan den bara användas inom hakparenteser ([ ]). Om du jämför med den här funktionen minskar inte kardinaliteten vid statisk typinferens.
Exempel
Det här avsnittet innehåller XQuery-exempel mot XML-instanser som lagras i olika XML- typkolumner i AdventureWorks2022-databasen.
A. Använda funktionen position() XQuery för att hämta de två första produktfunktionerna
Följande fråga hämtar de två första funktionerna, de två första underordnade elementen i <Features>-elementet, från beskrivningen av produktmodellens katalog. Om det finns fler funktioner läggs ett <there-is-more/> element till i resultatet.
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
Observera följande från föregående fråga:
Nyckelordet i XQuery Prolog definierar ett namnområdesprefix som används i frågetexten.
Frågetexten konstruerar XML som har ett <Product>-element med ProductModelID-- och ProductModelName--attribut och har produktfunktioner som returneras som underordnade element.
Funktionen position() används i predikatet för att fastställa positionen för <Funktioner> underordnat element i kontexten. Om det är den första eller andra funktionen returneras den.
IF-instruktionen lägger till ett <det finns fler/> element i resultatet om det finns fler än två funktioner i produktkatalogen.
Eftersom inte alla produktmodeller har sina katalogbeskrivningar lagrade i tabellen används WHERE-satsen för att ta bort rader där CatalogDescriptions är NULL.
Detta är ett partiellt resultat:
<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>
...