PostgreSQL. Как изменить тип с строкового на числовой?


Редко, но случается необходимость сменить тип поля в Базе Данных со строкового на числовой. То ли ошибка при разработке, то ли сменившиеся требования — но задача возможна.

В этой статье рассмотрим, как это сделать стандартными средствами.

Все что нам надо — выполнить следующий запрос:

ALTER TABLE my_table ALTER COLUMN my_column TYPE numeric(10, 2) USING (my_column::numeric);

На этом все. Если в Вашей колонке есть неподходящие для перевода в числовой формат данные (например, разделитель «,», а не «.») следует вручную привести данные в нужный формат — удалить пустые данные, указать для них значение 0 или заменить разделитель.

Ниже примеры типичных ситуаций:

-- удаление пустых записей
DELETE FROM my_table WHERE my_column IS NULL
-- обнуление пустых или NULL-значений
UPDATE my_table SET my_column = '0' WHERE my_column IS NULL OR my_column = ''
-- замена разделителя с запятой на точку
UPDATE my_table SET my_column = REPLACE(my_column, ',', '.')
,

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *