在MySQL中更改列数据类型时如何保留数据?

时间:2010-08-23 13:17:32

标签: sql mysql types

例如,假设我有一个TINYINT列,我想将其更改为ENUM。是否可以编写一个MySQL查询,在映射现有数据时更改列的数据类型,以便(例如)0变为No1变为Yes,并且2变为Maybe

3 个答案:

答案 0 :(得分:6)

我不确定这在MySQL中是否可行,但另一种解决方案是:

  1. 使用新名称
  2. 添加新列
  3. 设置新列值(给定旧列值)
  4. 删除旧列
  5. 将新列重命名为与旧列相同的名称

答案 1 :(得分:1)

在旧列旁边创建新列,使用更新移动数据,然后删除原始列。

答案 2 :(得分:0)

这需要4个步骤的序列- 添加新列,在新列中设置数据,删除旧列,重命名新列

Use [Databasename]
Go
ALTER table [tableName]
Add [newColumnname] datatype
GO
Update [tableName] SET [newColumnname] = [oldColumnname]
GO
ALTER table [tableName] Drop Column [oldColumnname]
GO
EXEC sp_RENAME 'tableName.newColumnname' , 'oldColumnname', 'COLUMN'
GO