カテゴリ:

数値関数 (四捨五入と切り捨て)

FLOOR

input_expr から値を、最も近い整数以下、または小数点以下の指定された桁数で最も近い整数以下に切り下げした値を返します。

こちらもご参照ください。

CEILROUNDTRUNCATE , TRUNC

構文

FLOOR( <input_expr> [, <scale_expr> ] )
Copy

引数

input_expr

操作する値または式です。データ型は、 FLOAT や NUMBERなどの数値データ型のいずれかでなければなりません。

scale_expr

出力の小数点の後に含める桁数です。式は-38~+38の整数に評価される必要があります。

デフォルトでは、 scale_expr はゼロになっています。これは、関数が小数点以下のすべての数字を削除することを意味します。

負のスケールについては、以下の使用上の注意をご参照ください。

戻り値

戻り値の型は入力型に基づいています。

  • 入力式が FLOAT の場合、返される型は FLOAT です。

  • 入力式が NUMBER の場合、返される型は NUMBER です。

    • 入力スケールが一定の場合:

      • 入力スケールが正の場合、返される型は入力スケールと等しいスケールを持ち、あらゆる可能性のある結果を包含するのに十分な大きさの精度があります。

      • 入力スケールが負の場合、返される型のスケールは0です。

    • 入力スケールが一定でない場合、返される型のスケールは入力式のスケールと同じになります。

スケールがゼロの場合、値は事実上 INTEGER になります。

例:

  • FLOOR(3.14::FLOAT, 1)によって返されるデータ型は FLOAT です。

  • FLOOR(3.14, 1)によって返される NUMBER はスケール1で、精度は少なくとも3です。

  • FLOOR(-9.99, 0)によって返される NUMBER はスケール0で、精度は少なくとも2です。

  • FLOOR(33.33, -1)によって返される NUMBER はスケール0で、精度は少なくとも3です。

使用上の注意

  • scale_expr が負の場合、数値を調整する小数点の の場所の数を指定します。例えば、スケールが-2の場合、結果は100の倍数になります。

  • scale_expr が入力式のスケールよりも大きい場合、関数は効果がありません。

  • input_expr または scale_expr のいずれかが NULL の場合、結果は NULL です。

  • 負の数が切り捨てられる場合、値は0から遠くなります。たとえば、 FLOOR(-1.1) は-2であり、-1ではありません。

  • 数値を下方に四捨五入すると、数値がデータ型の値の範囲外になる場合、エラーが返されます。

この例は、 scale_expr パラメーターなしの関数を示しています。

SELECT FLOOR(135.135), FLOOR(-975.975);
+----------------+-----------------+
| FLOOR(135.135) | FLOOR(-975.975) |
|----------------+-----------------|
|            135 |            -976 |
+----------------+-----------------+
Copy

この例は、負の数値に設定されたスケールを含む、 scale_expr パラメーターを使用した関数を示しています。

テーブルを作成して入力します。

CREATE TABLE test_floor (n FLOAT, scale INTEGER);
INSERT INTO test_floor (n, scale) VALUES
   (-975.975, -1),
   (-975.975,  0),
   (-975.975,  2),
   ( 135.135, -2),
   ( 135.135,  0),
   ( 135.135,  1),
   ( 135.135,  3),
   ( 135.135, 50),
   ( 135.135, NULL)
   ;
Copy

出力:

SELECT n, scale, FLOOR(n, scale)
  FROM test_floor
  ORDER BY n, scale;
+----------+-------+-----------------+
|        N | SCALE | FLOOR(N, SCALE) |
|----------+-------+-----------------|
| -975.975 |    -1 |        -980     |
| -975.975 |     0 |        -976     |
| -975.975 |     2 |        -975.98  |
|  135.135 |    -2 |         100     |
|  135.135 |     0 |         135     |
|  135.135 |     1 |         135.1   |
|  135.135 |     3 |         135.135 |
|  135.135 |    50 |         135.135 |
|  135.135 |  NULL |            NULL |
+----------+-------+-----------------+
Copy