Reputation: 409
I have a MySQL table with a VARCHAR(25) column that I want to convert to INT. All of the data in the column is either integer or blanks. I have tried this command:
ALTER TABLE ip MODIFY isp INT UNSIGNED NOT NULL;
Unfortunately, since some of the existing rows are empty I get this error:
ERROR 1366 (HY000): Incorrect integer value: '' for column 'isp' at row 2
Thanks for assistance.
Upvotes: 31
Views: 32773
Reputation: 60493
before altering your table, try to update your values.
The goal is to set a '0' value in the fields where you have empty values (which can't be converted to int)
update ip
set isp = '0' where trim(coalesce(isp, '')) = '';
If isp was not nullable, you can remove the coalesce function.
update ip
set isp = '0' where trim(isp) = '';
Upvotes: 29