ceiling 関数 (XQuery)
引数の値以上で、小数部を含まない最小の数値を返します。 引数が空のシーケンスの場合は、空のシーケンスを返します。
構文
fn:ceiling ( $arg as numeric?) as numeric?
引数
- $arg
関数を適用する数値。
説明
$arg の型が、xs:float、xs:double、または xs:decimal の 3 つの数値基本データ型のいずれかの場合、戻り値の型は $arg の型と同じになります。
$arg の型が数値型のいずれかから派生した型である場合、派生元の数値型が返されます。
fn:floor、fn:ceiling、または fn:round 関数への入力が xdt:untypedAtomic の場合、暗黙的に xs:double にキャストされます。
その他の型のデータが入力されると、静的エラーが生成されます。
使用例
このトピックでは、AdventureWorks データベースのさまざまな xml 型の列に格納されている XML インスタンスに対して実行する XQuery の例について説明します。
A. ceiling() XQuery 関数の使用
次のクエリは、製品モデル 7 の製造にかかわりのあるワーク センターの場所一覧を返します。 ワーク センターの場所ごとに、場所 ID、労働時間、ロット サイズのデータが記録されている場合、これを返します。 このクエリでは、ceiling 関数を使用して、decimal 型の値で労働時間を返しています。
SELECT ProductModelID, Instructions.query('
declare namespace AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions";
for $i in /AWMI:root/AWMI:Location
return
<Location LocationID="{ $i/@LocationID }"
LaborHrs="{ ceiling($i/@LaborHours) }" >
{
$i/@LotSize
}
</Location>
') AS Result
FROM Production.ProductModel
WHERE ProductModelID=7
上のクエリに関して、次の点に注意してください。
AWMI 名前空間プレフィックスは、Adventure Works Manufacturing Instructions を表しています。 このプレフィックスは、クエリ対象のドキュメントで使用されるものと同じ名前空間を示しています。
Instructions は xml 型の列です。 したがって、query() メソッド (XML データ型) を使用して、XQuery を指定しています。 query メソッドの引数には XQuery ステートメントを指定します。
for ... return はループ構造です。 このクエリでは、この for ループにより <Location> 要素の一覧を取得しています。 for ループの return ステートメントの記述により、ワーク センターごとに、次の XML が生成されます。
LocationID 属性と LaborHrs 属性を保持する <Location> 要素。 中かっこ ({ }) 内の対応する式により、必要な値をドキュメントから取得しています。
{ $i/@LotSize } 式により、ドキュメントに LotSize 属性がある場合、これを取得しています。
結果は次のとおりです。
ProductModelID Result
-------------- ------------------------------------------------------
7 <Location LocationID="10" LaborHrs="3" LotSize="100"/>
<Location LocationID="20" LaborHrs="2" LotSize="1"/>
<Location LocationID="30" LaborHrs="1" LotSize="1"/>
<Location LocationID="45" LaborHrs="1" LotSize="20"/>
<Location LocationID="60" LaborHrs="3" LotSize="1"/>
<Location LocationID="60" LaborHrs="4" LotSize="1"/>
実装の制限事項
次に、制限事項を示します。
- ceiling() 関数は、すべての整数値を xs:decimal にマップします。