我想将列的名称和类型从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)'
答案 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)
答案 4 :(得分:0)
ALTER TABLE table_name ALTER COLUMN creation_date TYPE timestamp USING creation_date::timestamp;
尝试