min 関数 (XQuery)

$arg のアトミック値のシーケンスの中から、値が最も小さいアイテムを返します。

構文

fn:min($arg as xdt:anyAtomicType*) as xdt:anyAtomicType?

引数

  • $arg
    最小値の取得元になるアイテムのシーケンス。

説明

min() に渡されるアトミック値のすべての型は、同じ基本データ型のサブタイプである必要があります。使用できる基本データ型は、gt 演算子をサポートする型です。この型には、3 つの組み込み数値基本データ型、date/time 基本データ型、xs:string、xs:boolean、および xdt:untypedAtomic が含まれます。xdt:untypedAtomic 型の値は、xs:double にキャストされます。これらの型が混在している場合、または他の型の他の値が渡された場合は、静的エラーが発生します。

xdt:untypedAtomic の場合、min() の結果は xs:double など、渡された型の基本データ型を受け取ります。入力が静的に空の場合は、結果が暗黙的に空になり、静的エラーが返されます。

min() 関数は、入力シーケンスの値のうち、最も小さい値を返します。xs:string 値の場合は、既定の Unicode コードポイント照合順序が使用されます。xdt:untypedAtomic 値を xs:double にキャストできない場合、入力シーケンス $arg 内でこの値は無視されます。入力が、動的に計算された空のシーケンスである場合は、空のシーケンスが返されます。

このトピックでは、AdventureWorks データベースのさまざまな xml 型列に格納されている XML インスタンスに対して実行する XQuery の例について説明します。これらの各列の概要については、「AdventureWorks データベースの xml データ型表現」を参照してください。

A. min() XQuery 関数を使用した、労働時間が最も短いワーク センター拠点の検索

次のクエリでは、製品モデル (ProductModelID=7) の製造プロセスに含まれるすべてのワーク センター拠点の中から、労働時間が最も短い拠点を取得します。通常、次に示すように 1 つの拠点が返されます。複数の拠点の労働時間が等しく最短である場合は、これらの拠点がすべて返されます。

select ProductModelID, Name, Instructions.query('
  declare namespace AWMI=
    "https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions";
  for   $Location in /AWMI:root/AWMI:Location
  where $Location/@LaborHours =
          min( /AWMI:root/AWMI:Location/@LaborHours )
return
  <Location WCID=     "{ $Location/@LocationID }" 
              LaborHrs= "{ $Location/@LaborHours }" />
  ') as Result 
FROM  Production.ProductModel
WHERE ProductModelID=7

上のクエリに関して、次の点に注意してください。

  • XQuery プロローグ内の namespace キーワードで、名前空間プレフィックスが定義されます。このプレフィックスは、XQuery の本文で使用されます。

XQuery 本文で、WCID 属性と LaborHrs 属性を持つ <Location> 要素を含む XML が構築されます。

  • クエリでは、ProductModelID 値と名前の値も取得されます。

結果を次に示します。

ProductModelID   Name              Result
---------------  ----------------  ---------------------------------
7                HL Touring Frame  <Location WCID="45" LaborHrs="0.5"/> 

実装の制限事項

次に、制限事項を示します。

  • min() 関数では、すべての整数が xs:decimal にマップされます。

  • xs:duration の型の値では min() 関数はサポートされません。

  • 基本データ型の境界を超えて複数の型が混在するシーケンスはサポートされません。

  • 照合順序を指定する構文オプションはサポートされません。