Функция last (XQuery)

Возвращает количество элементов в обрабатываемой в данный момент последовательности. Точнее, эта функция возвращает целочисленный индекс последнего элемента в последовательности. Значение индекса первого элемента в последовательности — 1.

Синтаксис

fn:last() as xs:integer

Замечания

В SQL Server функция fn:last() может быть использована в контексте контекстно-зависимого предиката. Точнее, ее использование возможно только внутри квадратных скобок ([ ]).

Примеры

В этом разделе представлены примеры XQuery-запросов к экземплярам XML-данных, хранящимся в различных столбцах типа xml в базе данных База данных AdventureWorks2008R2. Обзор каждого из этих столбцов см. в разделе Представление типов данных XML в базе данных AdventureWorks2008R2.

А. Использование функции last() XQuery для получения последних двух этапов производства

Следующий запрос получает последние два этапа производства для определенной модели продукта. Значение, количество этапов производства, возвращаемое функцией last(), используется в этом запросе для получения последних двух этапов производства.

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;

В предыдущем запросе функция last() в выражении //AWMI:root//AWMI:Location)[1]/AWMI:step[last()] возвращает количество этапов производства. Это значение используется для получения последнего этапа производства на участке цеха.

Результат:

ProductModelID Result

-------------- -------------------------------------

7 <LastTwoManuSteps>

<Last-1Step>

When finished, inspect the forms for defects per

Inspection Specification.

</Last-1Step>

<LastStep>Remove the frames from the tool and place them

in the Completed or Rejected bin as appropriate.

</LastStep>

</LastTwoManuSteps>

См. также

Справочник