Усечение значения до десятичного числа в PostgreSQL - PullRequest
0 голосов
/ 08 июля 2019

Я перемещаю данные из таблицы оракулов в Postgres с помощью dblink, и в новой структуре таблиц Postgres я добавил точность к числовому столбцу, который был без точности в Oracle, теперь при перемещении данных, которые яЯ могу усечь десятичные значения в соответствии с масштабом, однако я изо всех сил пытаюсь найти способ обрезать значение до десятичной точки, если оно не соответствует точности.

для настройки используемой шкалыкоманда ниже:

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

Таким образом, в этом случае, если значение после десятичной дроби больше 3 цифр, оно усечет его до 3 цифр, однако я хочу, если точность (до десятичной дроби)) больше 4, чем должно быть усечено до 4 цифр, я не против, если при этом будет изменено значение нескольких строк.

1 Ответ

1 голос
/ 08 июля 2019

Вы можете «усечь влево» число до десятичной точки с помощью

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...