2017-08-31 19 views
0

insertステートメントをどのように書き直す必要がありますか?数値フィールドのオーバーフロー例外

CREATE TABLE test_table ( 
    rate decimal(16,8) 
); 

INSERT INTO test_table VALUES (round(3884.90000000/0.00003696, 8)); 

例外:

ERROR: numeric field overflow 
SQL state: 22003 
Detail: A field with precision 16, scale 8 must round to an absolute value less than 10^8. Rounded overflowing value: 105110930.73593074 

データベース:Greenplumはデータベース4.3.8.0ビルド1(PostgreSQLの8.2.15に基づいて)

答えて

2

あなたが使用する必要があり、小数点(17.8)

CREATE TABLE test_table 
( 
    rate decimal(17,8) 
); 

以下の形式で小数点を使用してください。

decimal(precision, scale) 

1)数値の精度)は小数点

2の両側の整数、すなわち、桁数の有効数字の合計数である数値のスケールであります小数点以下桁数小数点以下の桁数

insertステートメントの結果は105110930.73593074なので、合計桁数は17、小数点以下は8であるため、10進数(17 、8)

Select (round(3884.90000000/0.00003696, 8)); 
関連する問題