我们在数据库中有两列,目前的类型为varchar(16).事实是,它包含数字,并且始终包含数字.因此,我们希望将其类型更改为整数.但问题是它当然已包含数据.
我们有什么方法可以将该列的类型从varchar更改为int,而不是丢失那些已存在的那些数字?希望我们可以运行某种sql,而不必创建临时列并创建C#程序或进行转换等等......我想如果SQL Server有一些函数将字符串转换为数字,但我在SQL上非常不稳定.几乎只能使用C#并通过LINQ to SQL访问数据库.
注意:是的,首先使列成为varchar并不是一个好主意,但不幸的是,他们这样做了.
cjk*_*cjk 38
唯一可行的方法是使用临时表,但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
Run Code Online (Sandbox Code Playgroud)
jmo*_*eno 23
最简单的方法是:
alter table myTable alter column vColumn int;
Run Code Online (Sandbox Code Playgroud)
这将有效