0

我正在查询一个数据库,其中出现以下异常:

将 varchar 值“B6UJ978023EC”转换为数据类型 int 时转换失败

我该如何解决?

4

2 回答 2

3

我的猜测是您的查询看起来像这样:

select * from mytable where SomeField = 'B6UJ978023EC' 

如果是这种情况,SomeField则被声明为INT数据类型,并且 Sql Server 正在尝试转换'B6UJ978023EC'INT不起作用的数据类型。

您可能正在尝试进行插入/更新,因此如果 SomeField 是 INT,这也不起作用。

update mytable
  set SomeField = 'B6UJ978023EC'
where something = something

insert mytable (field1, field2, SomeField)
values(123, 'abc', 'B6UJ978023EC')

结果相同,将 varchar 值“B6UJ978023EC”转换为数据类型 int 时转换失败

在这种情况下,要么更改列的数据类型,要么更改变量的值。

更新

如果您的列的数据类型是(N)VARCHAR但包含一些实数,那么您可以简单地在您要查找的数字周围添加单引号。

-- works
select * from mytable where SomeField = '123456'

-- doesn't work - same error
select * from mytable where SomeField = 123456
于 2012-08-01T09:33:29.380 回答
1

试试这个:

错误是因为您试图将字符值转换为整数值。只需将以下条件添加到查询中,以便它只选择整数值

where  ISNUMERIC(col+ '.0e0')=1
于 2012-08-01T09:31:32.150 回答