Sql 在数据已经存在后更改列的数据类型是否会破坏数据?

Sql 在数据已经存在后更改列的数据类型是否会破坏数据?,sql,types,Sql,Types,假设我有一列varchar40,其中已经有数据,我将该列的数据类型更改为整数。列中的数据是否发生了任何变化,即数据是否“损坏”或无关紧要,1,2,3的表仍然是1,2,3,无论数据类型如何?它将是相同的,取决于 数据类型转换错误,如foo到int char4中的截断 这将是相同的,取决于 数据类型转换错误,如foo到int char4中的截断 如果您试图更改列的数据类型,而新类型与旧类型不兼容,则该操作将失败,并且不会更改任何内容。您将得到如下错误: "Disallowed implicit co

假设我有一列varchar40,其中已经有数据,我将该列的数据类型更改为整数。列中的数据是否发生了任何变化,即数据是否“损坏”或无关紧要,1,2,3的表仍然是1,2,3,无论数据类型如何?

它将是相同的,取决于

数据类型转换错误,如foo到int char4中的截断
这将是相同的,取决于

数据类型转换错误,如foo到int char4中的截断
如果您试图更改列的数据类型,而新类型与旧类型不兼容,则该操作将失败,并且不会更改任何内容。您将得到如下错误:

"Disallowed implicit conversion from data type <type> to data type <type2>".

如果您试图更改列的数据类型,而新类型与旧类型不兼容,则该操作将失败,并且不会更改任何内容。您将得到如下错误:

"Disallowed implicit conversion from data type <type> to data type <type2>".

这样做的第一个问题是,并非所有数据都符合进行更改的标准。在更改数据类型之前,需要找到并修复这些记录

这样做最安全的方法是:

备份 查找并修复任何不符合新数据类型标准的数据 在正确的数据类型中创建一个附加列 迁移数据 删除原始列
将新列重命名为旧名称

这样做的第一个问题是,并非所有数据都符合进行更改的条件。在更改数据类型之前,需要找到并修复这些记录

这样做最安全的方法是:

备份 查找并修复任何不符合新数据类型标准的数据 在正确的数据类型中创建一个附加列 迁移数据 删除原始列
将新列重命名为旧名称

无论预期行为如何,在进行此类更改之前请备份数据!无论预期的行为如何,在进行此类更改之前,请备份您的数据!