Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Что будет с данными если изменить тип поля Mysql?
 
 автор: sega_z   (05.05.2011 в 20:35)   письмо автору
 
 

Есть действующее поле в Mysql тип VARCHAR (250) с тремя различными типами данных: цифры, русские буквы, цифры и русские буквы (всего 7000 записей).

Но для поиска чисел в данном поле по условиям <= или >= необходимо поле типа INT (целые числа).

Что будет с данными если тупо изменить VARCHAR (250) на INT (в принципе главное, чтобы остались только цифры)?
Если перенести содержимое VARCHAR (250) в новое поле INT - какие данные останутся в новом поле INT?

  Ответить  
 
 автор: cheops   (05.05.2011 в 20:39)   письмо автору
 
   для: sega_z   (05.05.2011 в 20:35)
 

Ну скорее всего поля с русскими буквами превратятся в 0. Лучше всего параллельно создать столбец типа INT и обновлять его последовательного значениями из первого столбца (как средствами MySQL, так и средствами клиентского языка вроде PHP). Потом, когда вы останетесь довольны результатом, старый столбец можно будет уничтожить, а новому назначить имя старого столбца.

  Ответить  
 
 автор: sega_z   (05.05.2011 в 20:44)   письмо автору
 
   для: cheops   (05.05.2011 в 20:39)
 

А в новом столбце INT сохранятся цифры из старого?

  Ответить  
 
 автор: cheops   (05.05.2011 в 20:49)   письмо автору
 
   для: sega_z   (05.05.2011 в 20:44)
 

Да, для начала вам понадобится выполнить запрос вида
UPDATE tbl SET newfls = oldfld
где newfls - имя нового столбца, а oldfld - имя старого столбца. Потом нужно посмотреть масштаб катастрофы, сколько столбцов отлично от нуля, а сколько равно нулю и что еще можно предпринять, чтобы спасти данные.

  Ответить  
 
 автор: sega_z   (05.05.2011 в 20:53)   письмо автору
 
   для: cheops   (05.05.2011 в 20:49)
 

А этот код оставит старое поле без изменений? (просто очень боюсь рисковать).

  Ответить  
 
 автор: cheops   (05.05.2011 в 21:03)   письмо автору
 
   для: sega_z   (05.05.2011 в 20:53)
 

Да, оставит без изменений, затронут будет только newfls.

PS Собственно полезно все преобразования отрабатывать на отдельной базе данных (пусть небольшого размера), тогда вы сможете посмотреть как ведут себя запросы, не боясь повредить критически важные данные.

  Ответить  
 
 автор: sega_z   (05.05.2011 в 21:10)   письмо автору
 
   для: cheops   (05.05.2011 в 21:03)
 

Вся операция прошла успешно!
Спасибо за очередную помощь!!!
Вы супер!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования