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

时间:2010-01-25 20:24:53

标签: sql types

假设我有一个包含数据的varchar(40)列,并且我将该列的数据类型更改为整数。列中的数据是否完全改变(即,数据是否“损坏”)或无关紧要,无论数据类型如何,(1,2,3)的表仍然是(1,2,3)?

3 个答案:

答案 0 :(得分:2)

它将是相同的,受

的约束
  • 数据类型转换错误(例如“foo”到int)
  • 截断(例如char(4)中的“foobar”)

答案 1 :(得分:2)

如果您尝试更改列的数据类型并且新类型与旧类型不兼容,则它将失败并且不会发生任何更改。你会收到如下错误:

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

答案 2 :(得分:0)

当您执行此类操作时,您遇到的第一个问题是并非所有数据都符合进行更改的条件。在更改数据类型之前,需要找到并修复这些记录。

最安全的做法是:

进行备份 查找并修复任何不符合新数据类型条件的数据 以正确的数据类型创建其他列 迁移数据 删除原始列 将新列重命名为旧名称