last 関数 (XQuery)
現在処理中のシーケンス内のアイテム数を返します。具体的には、シーケンス内の最後のアイテムの整数インデックスを返します。シーケンス内の最初のアイテムのインデックス値が 1 になります。
構文
fn:last() as xs:integer
解説
SQL Server では、fn:last() を使用できるのは、コンテキストに依存する述語のコンテキスト内のみです。具体的には、角かっこ ([ ]
) 内でしか使用できません。
例
このトピックでは、AdventureWorks データベースのさまざまな xml 型列に格納されている XML インスタンスに対して実行する XQuery の例について説明します。これらの各列の概要については、「AdventureWorks データベースの xml データ型表現」を参照してください。
A. last() XQuery 関数を使用して、最後の 2 つの製造ステップを取得する
次のクエリでは、特定の製品モデルの最後の 2 つの製造ステップを取得します。このクエリでは、最後の 2 つの製造ステップを取得するために、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
上のクエリでは、//AWMI:root//AWMI:Location)[1]/AWMI:step[last()]
の 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>