MySql меняем тип поля с vchar на int

17.08.2022

Столкнулся с тем, что у одного проекта поле с количеством товара было vchar. И, в один прекрасный момент, в него начали выгружать количество с двумя нулями в конце ",00". Как результат много где отвалились проверки и эти нули вылезли в карточке товара, на главной, в категории... проще сказать где они не вылезли.

Решение кажется простым, просто сменить тип с vchar на int, но MySql не даст это сделать, т.к. не сможет привести типы.

Решение:

  • Делам копию поля (на всякий пожарный)

  • Используем функцию REPLACE для удаления ",00"

  • Меняем тип, теперь это можно сделать.

 

ALTER TABLE `b_iblock_element_prop_s1` ADD `_TMP` varchar(250) COLLATE 'utf8_unicode_ci' NULL;
UPDATE b_iblock_element_prop_s1 SET _TMP = PROPERTY_21;

UPDATE b_iblock_element_prop_s1 SET PROPERTY_21 = REPLACE(PROPERTY_21, ',00', '');

ALTER TABLE `b_iblock_element_prop_s1` CHANGE `PROPERTY_21` `PROPERTY_21` int NULL AFTER `PROPERTY_20`;


Категории: SQL, -Памятка-
Яндекс.Метрика