MySQL将列数据类型从VARCHAR转换为INT

Bri*_*n G 17 mysql

我有一个带有VARCHAR(25)列的MySQL表,我希望将其转换为INT.列中的所有数据都是整数或空白.我试过这个命令:

ALTER TABLE ip MODIFY isp INT UNSIGNED NOT NULL;
Run Code Online (Sandbox Code Playgroud)

不幸的是,由于某些现有行是空的,我收到此错误:

ERROR 1366 (HY000): Incorrect integer value: '' for column 'isp' at row 2
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

Rap*_*aus 15

在更改表格之前,请尝试更新您的值.

目标是在您具有空值(不能转换为int)的字段中设置"0"值

update ip
set isp = '0' where trim(coalesce(isp, '')) = '';
Run Code Online (Sandbox Code Playgroud)

如果isp不可为空,则可以删除coalesce函数.

update ip 
set isp = '0' where trim(isp) = '';
Run Code Online (Sandbox Code Playgroud)

  • @BrianG所以不要犹豫,接受它;) (2认同)