mysql:如何截断字段的长度

问题描述 投票:8回答:4
Alter table merry_parents change mobile mobile char(10).

当我这样做时,我收到错误:

#1265 - 第2行的“移动”列截断数据

如何将我的移动字段截断为char(10)?目前它是char(12)。

mysql field truncate alter
4个回答
21
投票

该错误告诉您第2行(可能还有其他数据)中有12个字符的数据,因此它停止了alter命令以避免丢失数据。

尝试使用SUBSTRING()更新您的表以缩短列。目前还不清楚你为什么要这样做,因为你会丢失数据,但这会将数据截断为10个字符:

UPDATE merry_parents SET mobile=SUBSTRING(mobile, 1, 10)

然后运行你的alter命令:

ALTER TABLE merry_parents CHANGE mobile mobile char(10).

3
投票

如果您可以将数据截断为10个字符,则可以先更新列,然后再调整大小

UPDATE <tablename> set mobile = left(mobile, 10);

然后运行你的alter语句。


1
投票

如果您愿意仅截断数据,可以使用ALTER上的IGNORE选项一步完成:

ALTER IGNORE TABLE merry_parents MODIFY mobile char(10);

0
投票

您的数据字符数多于您尝试将其更改为的列的长度。

或者您在指定字段中具有空值。

http://bugs.mysql.com/bug.php?id=14742

© www.soinside.com 2019 - 2024. All rights reserved.