为什么有人会两次改变一个列,因为它开始了?

时间:2014-02-03 14:25:29

标签: tsql

我正在查看某人编写的代码,他们在脚本上做的第一件事是将列更改为

    alter column column_1 decimal(12,0)

    alter column column_1 varchar(30)

    alter column column_2 decimal(12,0)

    alter column column_2 varchar(30)

表中的字段最初是Varchar 30,我很好奇为什么有人会这样做?我想不出任何理由,但我确信它一定是我忽视的明显的东西。

1 个答案:

答案 0 :(得分:1)

在某些情况下(取决于值的插入方式),您可能需要规范化列中的信息。转换为十进制具有格式化影响,但也将其保留为数字字段。因此,作者决定将其施放一次(应用格式化)然后将其抛回(无论出于何种原因)。

请参阅this example

或者他们可以只运行一个UPDATE脚本,结果为the same outcome。我不是 能够熟练地优化SQL,但是对更新执行列更改可能会带来性能优势。或者,正如@ t-clausen.dk所提到的,对于作者可能想要的约束有影响。无论哪种方式,作者决定采用这条路线(无论他/她有什么原因)。

因此,为了说明,一个表格看起来像:

ID  VAL
1   123
2   123.45
3   .123
4   12.34567

在两次更改(或更新)后,您最终得到:

ID  VAL
1   123
2   123
3   0
4   12