在PostgreSQL中截断小数点前的值

时间:2019-07-08 06:50:38

标签: postgresql oracle-fdw

我正在使用dblink的帮助将数据从oracle表移动到Postgres,在Postgres的新表结构中,我将精度添加到了Oracle中没有精度的数字列中,现在在移动数据时能够截断十进制值以匹配小数位,但是,如果它与精度不匹配,我正在努力寻找一种方法来截断小数点前的值。

要调整比例,我正在使用以下命令:

insert into Postgres.test 
select id, width::numeric(7,3) 
from oracle.test;

因此,在这种情况下,如果小数点后的值大于3位,它将截断为3位,但是,我想如果精度(小数点前)大于4,则它也应该得到截断为4位数字,我不介意这样更改几行的值。

1 个答案:

答案 0 :(得分:1)

您可以通过以下方式“左截断”小数点前的数字

insert into Postgres.test 
select id, (width % 10000)::numeric(7,3) 
from oracle.test;

但是我认为这样做没有多大意义。最好使用NULL而不是错误的值:

insert into Postgres.test 
select id, CASE WHEN width >= 10000 THEN NULL ELSE width::numeric(7,3) END
from oracle.test;