数値関数 - ceiling
適用対象:SQL Server
小数部を含まない最小の数値を返します。引数の値より小さい値ではありません。 引数が空のシーケンスの場合は、空のシーケンスを返します。
構文
fn:ceiling ( $arg as numeric?) as numeric?
引数
$arg
関数が適用される数値。
解説
$argの型が、xs:float、xs:double、または xs:decimal の 3 つの数値基本型のいずれかである場合、戻り値の型は$arg型と同じです。
$argの型が数値型の 1 つから派生した型である場合、戻り値の型は基本数値型です。
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 製造手順を表します。 このプレフィックスは、クエリ対象のドキュメントで使用されているのと同じ名前空間を参照します。
命令 は xml 型の列です。 したがって、 query() メソッド (XML データ型) を使用して XQuery を指定します。 XQuery ステートメントは、クエリ メソッドの引数として指定されます。
...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 にマップします。