如何将 varchar 列值转换为 int?
Posted
技术标签:
【中文标题】如何将 varchar 列值转换为 int?【英文标题】:How to convert varchar column values into int? 【发布时间】:2013-12-08 08:24:52 【问题描述】:我在一个表中有一个 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
我遇到了同样的错误。如何转换它?我在许多网站上进行了搜索,但我无法获得解决方案。请任何人帮忙。
【问题讨论】:
这是因为你的study.toysid
中有一个数据不能转换成int
。
【参考方案1】:
确保您的toysid
列中除了数字之外没有任何其他内容。我怀疑该列中还有数字以外的字符。一旦确定,请尝试以下查询..
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))
【讨论】:
我已经尝试了这两个查询,但存在相同的错误。该列的值类似于 001, 002, 003 尝试下面的查询以查找所有非数字的值.. 从 YOURTABLE WHERE ISNUMERIC(toysid) = 0 中选择玩具ID【参考方案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
【讨论】:
以上是关于如何将 varchar 列值转换为 int?的主要内容,如果未能解决你的问题,请参考以下文章
将 varchar 值“AND ID =”转换为数据类型 int 时转换失败
列值是需要转换为十进制的varchar。列名采用日期格式。 sql服务器
如何在 SQL 条件中将 INT 转换为 VARCHAR [重复]