2014-02-14 71 views
12

我有一个带有要转换为INT的VARCHAR(25)列的MySQL表。列中的所有数据都是整数或空格。我已经试过此命令:MySQL将列数据类型从VARCHAR转换为INT

ALTER TABLE ip MODIFY isp INT UNSIGNED NOT NULL; 

不幸的是,由于现有的一些行是空的,我得到这个错误:

ERROR 1366 (HY000): Incorrect integer value: '' for column 'isp' at row 2 

感谢帮助。

+0

例如,您有现有记录并且没有默认值,例如0。简而言之,它不能为一个数字提供空的内容。 – Rolice

回答

11

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

的目标是在,你必须空值(其不能被转换为int)

update ip 
set isp = '0' where trim(coalesce(isp, '')) = ''; 

字段设置为“0”值。如果ISP不为空的,则可以删除该聚结功能。

update ip 
set isp = '0' where trim(isp) = ''; 
+0

谢谢,这个答案完美。 –

+2

@BrianG所以不要犹豫,接受它;) –

相关问题