我正在使用dblink将数据从Oracle表移动到Postgres,在Postgres的新表结构中,我为oracle中没有精度的数值列添加了精度,现在在移动数据时,我能够截断小数值以匹配小数位数,但是,如果小数点之前的值与精度不匹配,我正在努力寻找一种方法来截断该值。
要调整比例,我使用以下命令:
insert into Postgres.test
select id, width::numeric(7,3)
from oracle.test;
所以,在这种情况下,如果小数点后的值大于3位,它会将其截断到3位,但是,如果精度(小数点前)大于4,也应该被截断到4位,我不介意这样做会改变几行的值。
发布于 2019-07-08 15:04:56
你可以用“左截断”小数点前的数字
insert into Postgres.test
select id, (width % 10000)::numeric(7,3)
from oracle.test;
但我看不出这么做有多大意义。使用空值可能比使用坏值更好:
insert into Postgres.test
select id, CASE WHEN width >= 10000 THEN NULL ELSE width::numeric(7,3) END
from oracle.test;
https://stackoverflow.com/questions/56929672
复制相似问题