我想将一些列的类型从Varchar更改为Double而不会丢失表中的任何数据。我正在使用MySQL和Workbench来管理数据库。
我已经完成了一些测试...并且使用了一个充满Varchar的表,当我将列类型更改为Double时,它完美地运行...之前的数据似乎是自动转换的。这是正常的吗?是Workbench做的所有工作还是MySQL的东西?
另外,我使用JDBC和Java将数据推送到表中,当我使用PreparedStatement.setString()方法时它仍然有效,即使我将列类型更改为Double。
我以为我必须将自己的所有线条都转换成另一张桌子,但如果它的工作方式如此,那就完美了。
感谢您的启发!
答案 0 :(得分:1)
当您使用ALTER TABLE
语句(这是MySQL Workbench所做的)时,MySQL会为您完成工作。
查看官方documentation:
使用
CHANGE
或MODIFY
更改数据类型时,MySQL会尝试尽可能将现有列值转换为新类型。警告的 此转换可能导致数据更改。例如,如果缩短字符串列,则可能会截断值。要防止操作成功,如果转换为新数据类型会导致数据丢失,请在使用
ALTER TABLE
之前启用严格SQL模式(请参见第5.1.7节“服务器SQL模式”)。
当然,您需要兼容类型。
答案 1 :(得分:0)
在MYSQL中,您首先复制要从中更改数据类型的列,将类型转换为新列并将其重命名为旧列。如果更改数据类型,它可以完美地工作但是用于查看透视图。这不是正常的行为,一个定义明确的方法是上面提到的。