Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tsql 为什么有人会改变一列两次,让它在开始时就离开?_Tsql - Fatal编程技术网

Tsql 为什么有人会改变一列两次,让它在开始时就离开?

Tsql 为什么有人会改变一列两次,让它在开始时就离开?,tsql,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,我很好奇为什么会有人这样做?我想不出任何理由,但我肯定这肯定是我忽略了什么 在

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

    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,我很好奇为什么会有人这样做?我想不出任何理由,但我肯定这肯定是我忽略了什么

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

或者,他们可以运行一个
更新
脚本,该脚本将导致。我对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

顺便说一句,简单的例子:谢谢你。现在有了完美的解释:)此过程还将删除NOTNULL约束