如何将表的货币列转换为postgresql

时间:2016-05-14 00:00:09

标签: postgresql

我们需要让我们的架构支持多种货币。因此,使用货币字段不是一种选择。所以,我试图将货币列转换为数字(12,2)。我尝试了以下方法:

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

1 个答案:

答案 0 :(得分: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);

您的值不超过一百万。你测试了大的负值吗?