2015-10-10 2 views
2

У меня есть MySQL-таблицы с несколькими colomns какAlter MySQL полей таблицы VARCHAR в десятичную поля

id text_1 val_1 text_2 text_3 val_2 
1 'bla' 1,23 'blub' 5,67 12,34 

К сожалению, все поля определены как varchar. Теперь я пытаюсь изменить таблицу, чтобы сделать несколько полей десятичными значениями.

Я хотел бы попробовать

UPDATE table SET 
val_1 = CAST(val_1 AS DECIMAL(5,2)), 
val_2 = CAST(val_2 AS DECIMAL(5,2)); 

Это должно дать мне десятичные значения с двумя знаками после запятой и максимальным значением 999,99, правильно?

И это правильный способ изменить структуру таблицы? Это должно быть одноразовое преобразование, так как значения должны иметь десятичный тип, а строки должны быть типа varchar.

Должен ли я сначала преобразовать «запятую» в «точку»?

Update

К сожалению, я также значения типа `< 0,01' . Но поле должно быть десятичным полем. Что я могу сделать с этим?

+0

Нет. Кроме того, вам необходимо изменить типы данных, вы также должны изменить свою полную структуру таблицы. Что содержит таблица. Мы могли бы помочь вам сделать лучший дизайн стола. –

ответ

1

Да, вам нужно преобразовать a в a. первый.

UPDATE sometable SET val_1=REPLACE(val_1,',','.'); 

После того, что стол должен быть изменен: не требуется

ALTER TABLE sometable MODIFY COLUMN val_1 DECIMAL(5,2); 

Ваше заявление обновление.

Если у вас есть меньшие значения, они будут округлены (вниз в вашем случае). Чтобы предотвратить округление, используйте другую настройку DECIMAL (с большим количеством цифр).

+0

Спасибо за это. Как мне сделать обновление? У вас есть идея проблемы, которую я описал в обновленном сообщении? – user3142695

+0

См. Обновленный ответ –

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