2017-08-31 72 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)的兩側上的號碼的數字的標度是由於插入語句的結果是105110930.73593074,因此總數位數爲17,小數點後面有8位,所以您應該使用小數點(17位) ,8)

Select (round(3884.90000000/0.00003696, 8));