我正在查看某人编写的代码,他们在脚本上做的第一件事是将列更改为
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,我很好奇为什么有人会这样做?我想不出任何理由,但我确信它一定是我忽视的明显的东西。
答案 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