将varchar转换为int

时间:2012-03-03 18:14:01

标签: sql sql-server-2008 sql-server-2005

我在表中有20行,而该表中的一列是varchar类型,我需要更改为decimal (18,2)类型的列,因为在数据库列中值是十进制的,我需要更改所有列,请帮帮我。

3 个答案:

答案 0 :(得分:2)

为什么不

CAST(COLUMN AS DECIMAL(18,2)) 

或者可能是CONVERT

您可能还想使用ISNUMERIC来确保它是可转换的

答案 1 :(得分:0)

尝试转换

http://msdn.microsoft.com/en-us/library/ms187928.aspx

像这样的东西

alter table sqlTable add newColumn

UPdate sqlTable
Set newColumn = convert(decimal(18,2),oldcolumn)

alter table sqlTable drop oldcolumn

答案 2 :(得分:0)

要迁移数据 - 如果确实这是您的要求 - 您可能最好在表中添加新列,对该列进行更新,检查数据然后删除旧列。如果要保留原始列名,可以重复此过程。

因此
1. alter table mytable add myNewColumn int(或十进制(18,2),取决于您的要求)
2.更新mytable set myNewColumn = cast(myOldColumn as int) or convert(int, myOldColumn) - 请参阅http://msdn.microsoft.com/en-us/library/ms187928.aspx
3.目视检查数据
4. alter table mytable drop myOldColumn