2016-05-14 48 views
0

我們需要使我們的模式支持多種貨幣。所以,使用貨幣領域不是一種選擇。所以,我試圖將貨幣列轉換爲數字(12,2)。我嘗試以下方法:如何將表格的貨幣列轉換爲postgresql中的數字列

ERROR:數字字段溢出 詳細信息:

ALTER TABLE lead ALTER COLUMN deal_size TYPE NUMERIC(12, 2); 
ALTER TABLE lead ALTER COLUMN deal_size TYPE NUMERIC(12, 2) using deal_size::money::numeric(12,2); 
每次我收到以下錯誤

精度12場,規模2必須四捨五入到的絕對值小於10^10

我覈實,沒有值的表中的此列超過$ 1,000,000個

回答

0

我測試在我的PostgreSQL以下和工作得很好。你運行的是哪個版本的PostgreSQL?

create temp table lead (id serial not null primary key, deal_size money); 
insert into lead (deal_size) select (random()*100000000)::numeric(14,4) from generate_series(1,10000) a; 
ALTER TABLE lead ALTER COLUMN deal_size TYPE NUMERIC(12, 2); 

您沒有超過一百萬的值。您是否測試過大的負值?

+0

非常感謝您的回覆。這是我的一個愚蠢的錯誤。我沒有意識到有幾個大的負值(作爲測試的一部分插入)。 –