DECIMAL または スカラー関数 DEC
DECIMAL 関数は、数値、または数値、整数、または 10 進数の文字ストリング表現またはグラフィック・ストリング表現のいずれかの、10 進表記を戻します。
数値から 10 進数:
ストリングから 10 進数:
スキーマは SYSIBM です。
数値から DECIMAL へ
- 数値式
- 組み込み数値データ・タイプの値を戻す式。
- 精度
- 1 以上、31 以下の値を持つ整数定数。
精度のデフォルトは、numeric-expression のデータ・タイプによって異なります。

- 5 (最初の引数が短整数の場合)
- 長精度整数の場合は 11
- 64 ビット整数の場合は 19
- 浮動小数点または小数部の場合は 15
- 31 (10 進浮動小数点の場合)

- 規模
- ゼロ以上、precision 以下の整数定数。 この値は、結果の位取りを指定します。 デフォルト値は 0 です。
関数の結果の数値は、精度が p で、
位取りが s である 10 進数の列または変数に、引数を
割り当てた場合と同じです。ここで
、p と s は、2 番目
と 3 番目の引数によって指定します。 数値全体を表すのに必要な有効数字の桁数が p-s よりも大きい場合は、エラーが生じます。
ストリングから DECIMAL へ
- 文字列式
- 長さ属性が 255 バイト以下の、文字ストリングまたはグラフィック・ストリング (CLOB または DBCLOB を除く) の値を戻す式。 このストリングには、数値の有効な文字ストリング表記が含まれていなければなりません。 前後のブランクはストリングから除去されます。結果のサブストリングは、SQL 整数または 10 進定数の有効なストリング表現を形成するための規則に準拠している必要があります。
- 精度
1 から 31 の範囲の値を持つ整数定数。 この 2 番目引数の値は結果の精度を指定します。 この指定がない場合のデフォルト値は 15 です。 
- 規模
- ゼロ以上、precision 以下の整数定数。 この値は、結果の位取りを指定します。 デフォルト値は 0 です。
- 十進文字
- string-expression 内の小数桁を、 数の整数部分から区切るために使用される 1 バイトの文字定数。 この文字は数字、正符号 (+)、負符号 (-)、またはブランクであってはなりません。 デフォルト値はピリオド (.) またはコンマ (,) で、decimal-character に 別の値を指定した場合、string-expression にデフォルト値を使用することはできません。
小数点以下の数字が小数点記号の右側の数字の桁数が有効数字の桁数よりも多い場合、小数点以下の数字は切り捨てられます。 文字列式における小数点記号の左側の有効数字の桁数(数値の整数部)が p-s より大きい場合、エラーが返されます。
関数の結果は、精度 p、位取り s の 10 進数です。ここで、p と s は 2 番目と 3 番目の引数です。 最初の引数が NULL になりうる場合は、結果も NULL になりえます。最初の引数が NULL の場合、結果は NULL 値となります。
注
- 代替構文:
- 精度を指定する際にアプリケーションの移植性を高めるには、CAST 指定を使用してください。 詳しくは、『CAST 指定』を参照してください。
例
- 例 1:
- DSN8C10.EMP の従業員の平均給与を、小数点以下2桁の8桁の数字で表しなさい。
SELECT DECIMAL(AVG(SALARY),8,2) FROM DSN8C10.EMP; - 例 2:
- SALARY 列の更新は、小数点文字としてコンマを使用する文字ストリングとして入力されるものとします。 例えば、ユーザーは 21400,50 を入力します。 入力値は 、CHAR(10) として定義されたホスト変数 NEWSALARY に割り当てられ、 このホスト変数が次の UPDATE ステートメントで使用されます。
UPDATE DSN8C10.EMP SET SALARY = DECIMAL (:NEWSALARY,9,2,',') WHERE EMPNO = :EMPID;
