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>