我在一个表中有一个toysid
数据类型的列varchar
。另一个表具有相同的列toysid
和int
数据类型(我知道我可以修改第一个表的列,但我必须遵循一些过程将其保留为varchar
)。
我写了以下查询来加入表:
select study.toysid
from study
join concepts on study.toysid = concepts.toysid
查询返回错误:
转换失败,将varchar数据类型转换为int
因此我尝试过以下查询:
select study.toysid
from study
join concepts on convert(int, study.toysid) = concepts.toysid
我得到了同样的错误。如何转换呢?我在很多网站上搜索过,但我无法得到解决方案。请任何人帮忙。
答案 0 :(得分:2)
确保玩具栏中没有数字以外的任何内容。我怀疑该列中还有其他字符而不是数字。如果您确定,请尝试以下查询..
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))
答案 1 :(得分: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