2017-06-12 17 views
-2

数値をDECIMAL(10,2)にキャストしようとしています。 わかりましたら、「1234567890」のような数字が有効な のDECIMAL(10,2)になります。 しかし、私はそれをキャストしようとすると、それは-413エラーが返されます。DECIMALへのDB2のキャスト

select CAST(1234567890 AS DECIMAL(10,2)) from SYSIBM.SYSDUMMY1; 

私は見ての通り:

「オーバーフローやアンダーフローがNUMERICデータ型変換中に発生したが、」

これはSQLです問題は、小数点以下の桁数が2つ追加されていることです。つまり、 です。したがって、合計長さは12であり、a(10,2)の有効数字ではありません。

実際には、(12,2)にキャストしようとすると「1234567890.00」と表示されます。

私はこれがエラーであるか、何か間違っているのだろうかと思います。 (12,2)への入力は、有効なオプションではないようです。 は、(12,2)には有効ではない「1234567890.12」のような数字を受け入れるためです。

ありがとうございます。

答えて

3

DECIMAL data typeは二つの数字提供することによって特定される:

  1. 最初の整数は数値の精度です。つまり、桁数の合計。 1〜31の範囲で指定できます。
  2. 2番目の整数は数値の位取りです。つまり、小数点以下の桁数です。それは0から数の精度に及ぶかもしれない。

DECIMAL(10,2)は合計10桁を意味し、2桁は縮尺に使用されます。したがって、番号1234567890は適合しません。12345678.90となります。

+0

ありがとう、私はそれをXMLのtotalDigitsとfractionDigitsのコンセプトと混同しました。私はそれが同じように機能すると思ったが、それはそうではないようだ – Elrohir

関連する問題