|
|
|
| Есть действующее поле в Mysql тип VARCHAR (250) с тремя различными типами данных: цифры, русские буквы, цифры и русские буквы (всего 7000 записей).
Но для поиска чисел в данном поле по условиям <= или >= необходимо поле типа INT (целые числа).
Что будет с данными если тупо изменить VARCHAR (250) на INT (в принципе главное, чтобы остались только цифры)?
Если перенести содержимое VARCHAR (250) в новое поле INT - какие данные останутся в новом поле INT? | |
|
|
|
|
|
|
|
для: sega_z
(05.05.2011 в 20:35)
| | Ну скорее всего поля с русскими буквами превратятся в 0. Лучше всего параллельно создать столбец типа INT и обновлять его последовательного значениями из первого столбца (как средствами MySQL, так и средствами клиентского языка вроде PHP). Потом, когда вы останетесь довольны результатом, старый столбец можно будет уничтожить, а новому назначить имя старого столбца. | |
|
|
|
|
|
|
|
для: cheops
(05.05.2011 в 20:39)
| | А в новом столбце INT сохранятся цифры из старого? | |
|
|
|
|
|
|
|
для: sega_z
(05.05.2011 в 20:44)
| | Да, для начала вам понадобится выполнить запрос вида
UPDATE tbl SET newfls = oldfld
| где newfls - имя нового столбца, а oldfld - имя старого столбца. Потом нужно посмотреть масштаб катастрофы, сколько столбцов отлично от нуля, а сколько равно нулю и что еще можно предпринять, чтобы спасти данные. | |
|
|
|
|
|
|
|
для: cheops
(05.05.2011 в 20:49)
| | А этот код оставит старое поле без изменений? (просто очень боюсь рисковать). | |
|
|
|
|
|
|
|
для: sega_z
(05.05.2011 в 20:53)
| | Да, оставит без изменений, затронут будет только newfls.
PS Собственно полезно все преобразования отрабатывать на отдельной базе данных (пусть небольшого размера), тогда вы сможете посмотреть как ведут себя запросы, не боясь повредить критически важные данные. | |
|
|
|
|
|
|
|
для: cheops
(05.05.2011 в 21:03)
| | Вся операция прошла успешно!
Спасибо за очередную помощь!!!
Вы супер! | |
|
|
|