2013-11-23 145 views
2

我有一列toysid这是varchar数据类型在一个表中。也有另一个表具有相同的列toysidint数据类型(我知道我可以修改第一个表的列,但我必须遵循一些过程,以保持它为varchar)。如何将varchar列值转换为int?

我已经写了下面的查询加入表:

select study.toysid 
from study 
join concepts on study.toysid = concepts.toysid 

查询返回错误:

Conversion failed wher converting varchar datatype into int

因此,我曾尝试下面的查询:

select study.toysid 
from study 
join concepts on convert(int, study.toysid) = concepts.toysid 

我得到了同样的错误。如何转换它?我在很多网站上搜索过,但我无法获得解决方案。请任何人都帮忙。

+0

这是因为你的'study.toysid'中有一个数据不能转换为'int'。 –

回答

2

可以省略其中具有非数字的值,然后用整数像下面这样的投记录:

select Mystudy.toysid 
from concepts 
    join (Select study.toysid From study WHERe ISNUMERIC(study.toysid)= 1) As MyStudy 
      on convert(int, MyStudy.toysid) = concepts.toysid 
+0

哇!很好,工作很好。非常感谢!!! – viji

+0

欢迎亲爱的.. !!!快乐编码.. !!! – Snehal

2

确保您的toyid列中除数字外没有其他任何内容。我怀疑该列中还有其他字符而不是数字。一旦确定,请尝试以下查询..

select study.toysid 
from study join concepts 
on cast(study.toysid as int) = concepts.toysid 

select study.toysid 
from study join concepts 
on cast(study.toysid as varchar(100)) = cast(concepts.toysid as varchar(100)) 
+0

我已经尝试了这两个查询,但存在相同的错误。该列的值为001,002,003 – viji

+0

请尝试以下查询以查找所有不是数字的值。 SELECT toysid FROM YOURTABLE WHERE ISNUMERIC(toysid)= 0 – DarkKnight

相关问题