カテゴリ:

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

TRUNCATE , TRUNC

入力式を、ゼロに近い最も近い(または等しい)整数、または小数点以下の指定された桁数を持つ、最も近く等しいか小さい値に切り捨てます。

これらの関数は同義語です。

注釈

TRUNC はオーバーロードされています。日付/時刻関数として使用して、 日付、時刻、タイムスタンプ を特定の部分に切り捨てることもできます。

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

CEILFLOORROUND

構文

TRUNCATE( <input_expr> [ , <scale_expr> ] )

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

引数

input_expr

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

scale_expr

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

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

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

戻り値

返される値のデータ型は NUMBER(精度、スケール)です。

入力スケールがゼロ以上の場合、出力スケールは通常入力スケールと一致します。

入力スケールが負の場合、出力スケールは0です。

例:
  • TRUNCATE(3.14、1)によって返されるデータ型は NUMBER(4、1)です。

  • TRUNCATE(3.14、0)によって返されるデータ型は NUMBER(4、0)です。

  • TRUNCATE(33.33、-1)によって返されるデータ型は NUMBER(5、0)です。

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

使用上の注意

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

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

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

  • 切り捨ては、少数ではなく0に向かって行われます。例えば TRUNCATE(-9.6)は、-10ではなく-9になります。

次の例は、 TRUNC 関数を示しています。

SELECT DISTINCT n, TRUNCATE(n) 
  FROM test_1
  ORDER BY n;
+----------+-------------+
|        N | TRUNCATE(N) |
|----------+-------------|
| -975.975 |        -975 |
|  135.135 |         135 |
+----------+-------------+
Copy
SELECT n, scale, TRUNC(n, scale) 
  FROM test_1 
  ORDER BY n, scale;
+----------+-------+-----------------+
|        N | SCALE | TRUNC(N, SCALE) |
|----------+-------+-----------------|
| -975.975 |    -1 |        -970     |
| -975.975 |     0 |        -975     |
| -975.975 |     2 |        -975.97  |
|  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