在mysql中我有一个包含' T'的CHAR(1)列。和' F'对于真与假。我想在单个SQL语句中将其转换为1和0的TINYINT(1)列。如何在不创建新列的情况下执行此操作?如果我做
alter table my_table modify my_column tinyint;
然后我假设自动转换将导致我的所有行都被替换为0.如何在列类型修改期间指定转换表?
答案 0 :(得分:4)
用一个命令?我怀疑它可能,没有创建一个新的列?你可以试试这个:
您可以分两步完成 - 首先将所有内容转换为数字,然后尝试修改列(未经测试):
UPDATE my_table t
SET t.my_column = CASE WHEN t.my_column = 'T' THEN '1'
ELSE '0'
END;
alter table my_table modify my_column tinyint;