- カテゴリ:
数値関数 (四捨五入と切り捨て)
TRUNCATE , TRUNC¶
入力式を、ゼロに近い最も近い(または等しい)整数、または小数点以下の指定された桁数を持つ、最も近く等しいか小さい値に切り捨てます。
これらの関数は同義語です。
注釈
TRUNC はオーバーロードされています。日付/時刻関数として使用して、 日付、時刻、タイムスタンプ を特定の部分に切り捨てることもできます。
構文¶
TRUNCATE( <input_expr> [ , <scale_expr> ] )
TRUNC( <input_expr> [ , <scale_expr> ] )
引数¶
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 | +----------+-------------+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 | +----------+-------+-----------------+