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() 関数はサポートされません。
- 基本データ型の境界を超えて複数の型が混在するシーケンスはサポートされません。
- 照合順序を指定する構文オプションはサポートされません。