2011-07-21 52 views
0

当我们添加一个新的表格中,我们犯了一个错误:一个领域是一个varchar(255),但我们必须写连接查询。 所以我们改变表格做一个char(6)。MySQL将varchar转换为char是什么?

我的问题是:什么在这种情况下,MySQL的呢? 它修剪正确吗?

+0

你为什么要加入char字段。最好使用一个整数。 –

回答

3

不是什么MySQL的或不这样做,为什么不只是改变自己之前转换数据的担心。

例如

UPDATE YourTable 
SET YourField = LEFT(YourField,6); 

ALTER TABLE YourTable MODIFY COLUMN YourField Char(6) 

你应该注意的是,如果你的列数据太长,它不会让你做ALTER假设启用严格的SQL模式见SHEF的完整的答案

0

的MySQL甚至不会让你改变表如果有任何情况,你会丢失数据(例如,一行有一个字段的文本超过六个字符的条目),所以你最好将数据转换成你认为合适的方式。

1

它将尝试转换格式。在你的情况下,该列是一个字符串类型,所以如果没有启用严格的SQL模式,它将截断该值。

当您使用CHANGE或MODIFY更改数据类型时,MySQL会尝试 尽可能将现有列值转换为新类型。

警告此转换可能导致数据的改变。例如,如果您缩短字符串列,则可能会截断值 。为了防止 操作成功执行的,如果转换到新的数据类型 会导致数据丢失,使用 ALTER TABLE之前启用严格的SQL模式(参见5.1.6节,“SQL服务器模式”)。

阅读罚款warning下降了页面的五分之二。

+1

+1 –