2016-05-14 5 views
0

Нам нужно, чтобы наша схема поддерживала несколько валют. Таким образом, использование валютного поля не является вариантом. Итак, я пытаюсь преобразовать валютную колонку в числовую (12,2). Я попытался следующие подходы:Как конвертировать столбец валюты таблицы в числовой столбец в postgresql

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 млн

ответ

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

Большое спасибо за ваш ответ. Это глупая ошибка с моей стороны. Я не понимал, что существует пара больших отрицательных значений (вставлена ​​как часть тестирования). –

Смежные вопросы