数値→ 10 進数:
>>-+-DECIMAL-+--(--numeric-expression---------------------------> '-DEC-----' >-----+-----------------------------------------------+--)----->< '-,--precision-integer--+--------------------+--' '-,--scale-integer---'
文字→ 10 進数:
>>-+-DECIMAL-+--(--character-expression-------------------------> '-DEC-----' >-----+----------------------------------------------------------------------------+> '-,--precision-integer--+-------------------------------------------------+--' '-,--scale-integer----+------------------------+--' '-,--decimal-character---' >----)---------------------------------------------------------><
スキーマは SYSIBM です。
DECIMAL 関数は、以下の 10 進表記を戻します。
関数の結果は、精度 p、 位取り s の 10 進数になります (p と s はそれぞれ 2 番目と 3 番目の引き数)。 最初の引き数がヌル値の可能性がある場合、結果もヌル値の可能性があります。 最初の引き数がヌル値である場合、その結果もヌル値になります。
precision-integer のデフォルト値は、 numeric-expression のデータ・タイプによって異なります。
結果は、最初の引き数が精度 p、 位取り s の 10 進数の列または変数に割り当てられた場合と同じ数になります (p と s は、 それぞれ 2 番目と 3 番目の引き数)。 数値の整数部分を表すために必要な有効 10 進桁数が、 p - s より大きい場合はエラーになります。
定数 decimal-character のコード・ページに一致させるために必要なら、 character-expression はデータベース・コード・ページに変換されます。
結果は、精度 p、 位取り s の 10 進数になります (p と s は、 それぞれ 2 番目と 3 番目の引き数)。 小数点以下の数字の桁数が、位取り s より多い場合、 終わりから数字が切り捨てられます。 character-expression の小数点文字の左側にある有効数字 (数値の整数部分) の桁数が p - s よりも多い場合は、 エラーになります (SQLSTATE 22003)。 decimal-character 引き数が指定されている場合、 サブストリングに使われているデフォルトの小数点文字は無効になります (SQLSTATE 22018)。
例:
SELECT EMPNO, DECIMAL(EDLEVEL,5,2) FROM EMPLOYEE
SELECTPRSTDATE + DECIMAL(:PERIOD,8) FROM PROJECT
UPDATE STAFF SET SALARY = DECIMAL(:newsalary, 9, 2, ',') WHERE ID = :empid;
newsalary の値は 21400.50 になります。
DECIMAL('21400,50', 9, 2, '.')
この例では、 小数点文字としてピリオド (.) を指定しているのに、 第 1 引き数の中で区切り文字としてコンマ (,) が使われているため、 エラーになります。