3

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

我正在使用 MySQL 工作台。

我试过这个:

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)'
4

5 回答 5

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;
于 2013-06-07T08:34:04.023 回答
4
ALTER TABLE table_name CHANGE old_column_name new_col_name varchar(20) not null; 

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

于 2013-06-07T08:25:27.477 回答
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))
于 2013-06-07T08:22:30.060 回答
2

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

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

您可以在此处找到更多详细信息。

于 2013-06-07T08:26:10.817 回答
0
ALTER TABLE table_name ALTER COLUMN creation_date TYPE timestamp USING creation_date::timestamp;

尝试这个

于 2019-06-04T08:42:42.933 回答