我正在查询一个数据库,其中出现以下异常:
将 varchar 值“B6UJ978023EC”转换为数据类型 int 时转换失败
我该如何解决?
我的猜测是您的查询看起来像这样:
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
试试这个:
错误是因为您试图将字符值转换为整数值。只需将以下条件添加到查询中,以便它只选择整数值
where ISNUMERIC(col+ '.0e0')=1