次の方法で共有


last 関数 (XQuery)

現在処理中のシーケンス内のアイテム数を返します。具体的には、シーケンス内の最後のアイテムの整数インデックスを返します。シーケンス内の最初のアイテムのインデックス値が 1 になります。

構文

fn:last() as xs:integer

説明

SQL Server では、fn:last() を使用できるのは、コンテキストに依存する述語のコンテキスト内のみです。具体的には、角かっこ ([ ]) 内でしか使用できません。

このトピックでは、AdventureWorks2008R2 データベースのさまざまな xml 型の列に格納されている XML インスタンスに対して実行する XQuery の例について説明します。これらの各列の概要については、「AdventureWorks2008R2 データベースの 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>