Mysql 如何在不丢失数据的情况下更改列数据类型
How to change column data type without loosing data in Mysql
我有一个 city_id 列,其中包含 varchar(255) 和空值 。我想将其更改为 大整数 .
我会用:
ALTER TABLE Customer
ALTER COLUMN CITY_ID BIGINT
我是否丢失或损坏了任何数据?
您可以尝试添加一个新的大整数列作为中间步骤:
-- add new column
ALTER TABLE Customer ADD COLUMN CITY_ID_NEW BIGINT;
-- populate new column
UPDATE Customer
SET CITY_ID_NEW = CAST(CITY_ID AS UNSIGNED);
-- drop old column and rename new column
ALTER TABLE Customer DROP COLUMN CITY_ID;
ALTER TABLE Customer CHANGE COLUMN CITY_ID_NEW CITY_ID BIGINT NULL DEFAULT NULL;
我在上面假设您的整数值都是正数,即它们没有符号。如果您想要有符号整数,请将更新中的转换更改为 SIGNED
.
我有一个 city_id 列,其中包含 varchar(255) 和空值 。我想将其更改为 大整数 .
我会用:
ALTER TABLE Customer
ALTER COLUMN CITY_ID BIGINT
我是否丢失或损坏了任何数据?
您可以尝试添加一个新的大整数列作为中间步骤:
-- add new column
ALTER TABLE Customer ADD COLUMN CITY_ID_NEW BIGINT;
-- populate new column
UPDATE Customer
SET CITY_ID_NEW = CAST(CITY_ID AS UNSIGNED);
-- drop old column and rename new column
ALTER TABLE Customer DROP COLUMN CITY_ID;
ALTER TABLE Customer CHANGE COLUMN CITY_ID_NEW CITY_ID BIGINT NULL DEFAULT NULL;
我在上面假设您的整数值都是正数,即它们没有符号。如果您想要有符号整数,请将更新中的转换更改为 SIGNED
.