我们在数据库中有两列,目前的类型为varchar(16).事实是,它包含数字,并且始终包含数字.因此,我们希望将其类型更改为整数.但问题是它当然已包含数据.
我们有什么方法可以将该列的类型从varchar更改为int,而不是丢失那些已存在的那些数字?希望我们可以运行某种sql,而不必创建临时列并创建C#程序或进行转换等等......我想如果SQL Server有一些函数将字符串转换为数字,但我在SQL上非常不稳定.几乎只能使用C#并通过LINQ to SQL访问数据库.
注意:是的,首先使列成为varchar并不是一个好主意,但不幸的是,他们这样做了.
唯一可行的方法是使用临时表,但SQL不会太多:
select * into #tmp from bad_table truncate table bad_table alter bad_table alter column silly_column int insert bad_table select cast(silly_column as int), other_columns from #tmp drop table #tmp
最简单的方法是:
alter table myTable alter column vColumn int;
这将有效
所有数据都适合int
所有数据都可以转换为int(即"car"值将失败)
没有包含vColumn的索引.如果有索引,则需要包含一个drop并为它们创建以回到原来的位置.
只需更改SQL Server Management Studio中的数据类型即可.
(您可能需要转到菜单工具 → 选项 → 设计器,并禁用阻止保存重新创建表的更改的选项.)