コンテキスト関数 - last (XQuery)
適用対象:SQL Server
現在処理中のシーケンス内のアイテム数を返します。 具体的には、シーケンス内の最後のアイテムの整数インデックスを返します。 シーケンスの最初の項目のインデックス値は 1 です。
構文
fn:last() as xs:integer
解説
SQL Serverでは、fn:last() はコンテキスト依存述語のコンテキストでのみ使用できます。 具体的には、角かっこ ([ ]
) 内でのみ使用できます。
使用例
このトピックでは、AdventureWorks データベースのさまざまな xml 型列に格納されている XML インスタンスに対する XQuery の例を示します。
A. last() XQuery 関数を使用して、最後の 2 つの製造手順を取得する
次のクエリでは、特定の製品モデルの最後の 2 つの製造手順を取得します。 このクエリでは、 last() 関数によって返される値 (製造ステップの数) を使用して、最後の 2 つの製造ステップを取得します。
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>