2015-05-11 46 views
0

我有具有以下结构的表:转换溢出了一个int列。 Witouth转换()或铸造()

enter image description here

在MGDCOCRE和MGDCODEB列具有相似的价值观,以 '2158890000905' '2122190000905' ...

当试图运行一个简单UPDATE或SELECT(EG:选择从MGDMOCOT MGDIDENT其中MGDIDPAG不为空并且mgdcocre = 1)在该表中示出了错误消息:

将varchar值“2158890的转化000397'溢出了一个int列。

这个问题的可能解决方案是什么?

感谢的

+3

'和mgdcocre ='1'' < - 两个滴答是解决方案。 – Alexander

+0

您需要发布查询 - 查询中的某些内容试图隐式地将值转换为数字。 –

回答

1
select MGDIDENT 
from MGDMOCOT 
where MGDIDPAG is not null and mgdcocre=1 

什么是SQL Server的在这里做的?现在,mgdcocre是varchar,但1是整数。因此,SQL Server将mgdcocre列中的所有变量隐式转换为整数,以便与1进行整数比较。这会失败,因为至少有一个变量表示转换为整数的数字太大。

解决方案:

select MGDIDENT 
from MGDMOCOT 
where MGDIDPAG is not null and mgdcocre='1' 

在这里,你比较两个VARCHAR处理,因此无需转换。

+0

我的眼睛没有被注意到。谢谢! – nori