MySQL将varchar转换为char是什么?

时间:2011-07-21 15:17:48

标签: mysql char varchar alter-table alter

当我们添加一个新表时,我们犯了一个错误:一个字段是一个varchar(255),但我们必须编写连接查询。 所以我们改变表来制作一个char(6)。

我的问题是:在这种情况下MySQL是什么? 它修剪得好吗?

3 个答案:

答案 0 :(得分:3)

不要担心MySQL做什么或不做什么,为什么不在改变之前自己转换数据。

e.g。

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

ALTER TABLE YourTable MODIFY COLUMN YourField Char(6)

您应该注意,如果您的列数据太长,则不允许您执行更改,假设启用严格SQL模式,请参阅Shef的完整答案

答案 1 :(得分:1)

它会尝试转换格式。在您的情况下,该列是字符串类型,因此如果未启用严格SQL模式,它将截断该值。

  

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

     

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

在页面的五分之二处阅读罚款warning

答案 2 :(得分:0)

如果有任何情况你会丢失数据(例如,一行有一个字段长度超过六个字符的条目),MySQL甚至不允许你改变表格,所以你最好转换数据如何你认为合适。