更改数据库列名称及其类型,而不会丢失数据

时间:2013-06-07 08:20:12

标签: mysql sql database

我想将列的名称和类型从BIT(1)更改为INT(1)

我正在使用MySQL Workbench。

我试过了:

ALTER TABLE table_name ADD new_column_name INT(1)

update table_name
set new_column_name = convert(INT(1), old_column_name)

ALTER TABLE table_name DROP COLUMN old_column_name

但我收到此错误

You have an error in your SQL syntax; check the manual that corresponds to your
MySQL server version for the right syntax to use near 'INT(1), old_column_name)'

5 个答案:

答案 0 :(得分:5)

ALTER TABLE table_name ADD new_column INT(1);

update table_name
  set new_column = case when old_column then 1 else 0 end;

ALTER TABLE table_name DROP COLUMN old_column;

或只是使用:

ALTER TABLE table_name MODIFY COLUMN old_column int;

答案 1 :(得分:4)

ALTER TABLE table_name CHANGE old_column_name new_col_name varchar(20) not null; 

我把varchar作为例子。您可以更改为您喜欢的任何数据类型。您也可以在此之后添加约束。

答案 2 :(得分:2)

尝试这样的事情。

ALTER TABLE table_name ADD new_column_name INT

update table_name
set new_column_name = convert(int,convert(varchar(1), old_column_name))

答案 3 :(得分:2)

INT(1)似乎不是转换的有效类型。

此外,正确的语法是CONVERT(<element>, <type>)

您可以详细了解here

答案 4 :(得分:0)

ALTER TABLE table_name ALTER COLUMN creation_date TYPE timestamp USING creation_date::timestamp;

尝试