Skip to main content

TRUNCATE (SQL)

指定された桁で数値を切り捨てるスカラ数値関数。

構文

{fn TRUNCATE(numeric-expr,scale)}

概要

TRUNCATE は、numeric-expr を小数点から scale 桁目で切り捨てます。数値の丸めやゼロの埋め込みはしません。TRUNCATE 処理の前に、先頭と末尾のゼロは削除されます。

  • scale が正の数である場合、切り捨ては小数点から右に数えたその桁数で実行されます。scale が小数桁数以上の数である場合、切り捨てやゼロの埋め込みは実行されません。

  • scale が 0 の場合、数値は整数に切り捨てられます。つまり、切り捨ては小数点右側の 0 桁目で実行され、小数点以下と小数点そのものが切り捨てられます。

  • scale が負の数である場合、切り捨ては小数点から左に数えたその桁数で実行されます。scale が数の整数桁数以上である場合は、ゼロが返されます。

  • numeric-expr がゼロ (ただし 00.00 や -0 などのように表されている) 場合、TRUNCATEscale の値とは無関係に小数桁のない 0 (ゼロ) を返します。

  • numeric-expr または scale が NULL の場合、TRUNCATE は NULL を返します。

TRUNCATE は { } 括弧構文による ODBC スカラ関数としてのみ使用できます。

ROUND を使用して、数値で同様のトランケーション処理を実行できます。TRIM を使用して、文字列で同様のトランケーション処理を実行できます。

TRUNCATE、ROUND、および $JUSTIFY

数値関数 TRUNCATEROUND の動作は似ています。両方とも小数桁または整数桁の有効桁数を減らすために使用できます。ROUND では、丸め (既定) または切り捨てを指定できます。TRUNCATE は丸めを行いません。ROUNDnumeric-expr と同じデータ型を返します。TRUNCATEnumeric-expr をデータ型 NUMERIC として返します。ただしこれは、numeric-expr がデータ型 DOUBLE でない場合に限ります。DOUBLE である場合は、データ型 DOUBLE を返します。

TRUNCATE では、指定された小数桁数への切り捨てを行います。切り捨てによって末尾にゼロが生じた場合、これらの末尾のゼロは保持されます。ただし、scalenumeric-expr のキャノニック形式の小数桁数より大きい場合、TRUNCATE はゼロパディングを行いません。

ROUND では、指定された小数桁数への丸め (または切り捨て) を行いますが、その戻り値は常に正規化され、末尾のゼロが削除されます。例えば、ROUND(10.004,2) は 10.00 ではなく 10 を返します。

固定の小数桁数への丸めが重要な場合、例えば金額を表す場合などは、$JUSTIFY を使用します。$JUSTIFY は、丸め処理の後に指定された数の末尾のゼロを返します。丸める桁数が小数桁数より大きい場合、$JUSTIFY はゼロパディングを行います。また $JUSTIFY では、DecimalSeparator 文字が数値列内で揃うように数値が右寄せされます。$JUSTIFY は切り捨てを行いません。

引数

numeric-expr

切り捨てられる数字。数値または数値式。

scale

小数点からカウントして、どこまで切り捨てるかの桁数を指定する整数に評価される式。ゼロ、正の整数、または負の整数を指定できます。scale が小数の場合、最も近い整数に丸められます。

TRUNCATE は、DOUBLE、INTEGER、NUMERIC のデータ型を返します。

  • numeric-expr が DOUBLE 型の場合、TRUNCATE は DOUBLE を返します。

  • numeric-expr が INTEGER 型で scale が 0 以下の場合、TRUNCATE は INTEGER を返します。

  • numeric-expr が NUMERIC 型か INTEGER 型で、scale が 0 より大きい場合、TRUNCATE は NUMERIC を返します。

次の 2 つの例では、数値を小数第 2 位で切り捨てます。scale は整数として指定されています。

SELECT {fn TRUNCATE(654.321888,2)}
SELECT {fn TRUNCATE(654.321888,2)}

両方の例とも、654.32 を返します (小数第 2 位で切り捨て)。

以下の例は、小数桁数より大きな scale を指定しています。

SELECT {fn TRUNCATE(654.321000,9)}

この場合は 654.321 が返されます (InterSystems IRIS が切り捨て処理を行う前に末尾のゼロを削除し、切り捨てもゼロの埋め込みも行われません)。

次の例では、0 の scale を指定しています。

SELECT {fn TRUNCATE(654.321888,0)}

これは 654 を返します (小数点以下すべてと小数点が切り捨てられます)。

次の例では、負の scale を指定しています。

SELECT {fn TRUNCATE(654.321888,-2)}

これは 600 を返します (整数桁が 2 桁切り捨てられ、0 で置き換わります。丸めは実行されません)。

次の例では、負の scale を数値の整数桁数と同じに指定しています。

SELECT {fn TRUNCATE(654.321888,-3)}

これは 0 を返します。

関連項目

FeedbackOpens in a new tab