last-Funktion (XQuery)
Gibt die Anzahl der Elemente in der Sequenz zurück, die zurzeit verarbeitet wird. Insbesondere wird der ganzzahlige Index des letzten Elements in der Sequenz zurückgegeben. Das erste Element in der Sequenz besitzt den Indexwert 1.
Syntax
fn:last() as xs:integer
Hinweise
In SQL Server kann fn:last() nur im Kontext eines kontextabhängigen Prädikats verwendet werden. Insbesondere kann die Funktion nur innerhalb von Klammern ([ ]) verwendet werden.
Beispiele
Dieses Thema stellt XQuery-Beispiele für XML-Instanzen bereit, die in verschiedenen Spalten vom xml -Typ in der AdventureWorks2008R2-Datenbank gespeichert werden. Eine Übersicht über diese Spalten finden Sie unter Darstellung des xml-Datentyps in der AdventureWorks2008R2-Datenbank.
A. Verwenden der last()-Funktion von XQuery zum Abrufen der letzten beiden Fertigungsschritte
Die folgende Abfrage ruft die letzten beiden Fertigungsschritte für ein bestimmtes Produktmodell ab. Der Wert (die Anzahl der Fertigungsschritte), der von der last()-Funktion zurückgegeben wird, wird in dieser Abfrage zum Abrufen der letzten beiden Fertigungsschritte verwendet.
SELECT ProductModelID, Instructions.query('
declare namespace AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions";
<LastTwoManuSteps>
<Last-1Step>
{ (/AWMI:root/AWMI:Location)[1]/AWMI:step[(last()-1)]/text() }
</Last-1Step>
<LastStep>
{ (/AWMI:root/AWMI:Location)[1]/AWMI:step[last()]/text() }
</LastStep>
</LastTwoManuSteps>
') as Result
FROM Production.ProductModel
WHERE ProductModelID=7;
In der vorherigen Abfrage gibt die last()-Funktion in //AWMI:root//AWMI:Location)[1]/AWMI:step[last()] die Anzahl der Fertigungsschritte zurück. Dieser Wert wird zum Abrufen des letzten Fertigungsschritts am Arbeitsplatzstandort verwendet.
Dies ist das Ergebnis:
ProductModelID-Ergebnis
-------------- -------------------------------------
7 <LastTwoManuSteps>
<Last-1Step>
Nach Abschluss die Formen anhand
der Überprüfungsspezifikation auf Fehler prüfen.
</Last-1Step>
<LastStep>Die Rahmen vom Werkzeug nehmen und
je nach Zustand in den Behälter Completed (Fertiggestellt) oder Rejected (Ausschuss) legen.
</LastStep>
</LastTwoManuSteps>