Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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
Sql 将varchar转换为int_Sql_Sql Server 2008_Sql Server 2005 - Fatal编程技术网

Sql 将varchar转换为int

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(

我在一个表中有20个LAC行,该表中有一列的类型为
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
;清除该数据,然后重试。。。