Sql 将varchar转换为int
我在一个表中有20个LAC行,该表中有一列的类型为Sql 将varchar转换为int,sql,sql-server-2008,sql-server-2005,Sql,Sql Server 2008,Sql Server 2005,我在一个表中有20个LAC行,该表中有一列的类型为varchar,我需要在中更改为decimal(18,2)类型的列,因为数据库列中的值是decimal,我需要更改所有列,请帮助我。为什么不这样做 CAST(COLUMN AS DECIMAL(18,2)) 或者是一个 您可能还需要使用以确保它是可转换的请尝试转换 像这样的 alter table sqlTable add newColumn UPdate sqlTable Set newColumn = convert(decimal(
varchar
,我需要在中更改为decimal(18,2)
类型的列,因为数据库列中的值是decimal,我需要更改所有列,请帮助我。为什么不这样做
CAST(COLUMN AS DECIMAL(18,2))
或者是一个
您可能还需要使用以确保它是可转换的请尝试转换
像这样的
alter table sqlTable add newColumn
UPdate sqlTable
Set newColumn = convert(decimal(18,2),oldcolumn)
alter table sqlTable drop oldcolumn
要迁移数据(如果确实是您的需求),您最好向表中添加一个新列,对该列进行更新,检查数据,然后删除旧列。如果要保留原始列名,可以重复此过程 所以
1. <代码>更改表格mytable添加myNewColumn int(或十进制(18,2),具体取决于您的要求)
2.更新mytable set myNewColumn=
转换(myOldColumn为int)或转换(int,myOldColumn)
-请参阅3.目视检查数据
4.
altertablemytabledropmyoldcolumn
@ManojWadhwani:在这种情况下,您的varchar
列中必须有一些不是真正的int
的数据。首先过滤掉这些行,删除或更正这些行,然后再试一次是的,我编辑了我的答案以显示如何查找可以强制转换的有效值。ISNUMERIC(COLUMN)=1告诉您数值,ISNUMERIC(COLUMN)1告诉您无效值。正如@marc_s所说,您需要删除或更正非数字行,否则什么都不起作用。相同的错误:将数据类型varchar转换为数字时出错。尝试过但得到相同的错误:alter table TestData alter column[NET_ACCOUNTED][decimal](18,2)NULLI并不是建议您更改一个列,而是建议您添加一个所需数据类型的新列,并将数据放入其中。根据其他反馈-您需要使用ISNUMERIC检查数据是否被识别为数字。如果您对特定行有问题,哪些数据无法转换?也许您应该调查哪些行与小数不匹配,并将其包括在问题中。似乎人们正在用正确的代码解决您的问题,但您没有给出解决实际问题所需的所有参数。您的列中显然有非数字的数据-使用dbo中的SELECT(cols)查找它。YourTable中的ISNUMERIC(yourcolumn)=0
;清除该数据,然后重试。。。