我有一张具有以下结构的表:
在MGDCOCRE和MGDCODEB列中具有与'2158890000905''2122190000905'相似的值'...
当尝试运行简单的UPDATE或SELECT(E.G:从MGDMOCOT中选择MGDIDENT,其中MGDIDPAG不为空且mgdcocre = 1)时,此表中显示错误消息:
varchar值'2158890000397'的转换溢出了一个int列。
这个问题的可能解决方案是什么?
感谢的
答案 0 :(得分:1)
select MGDIDENT
from MGDMOCOT
where MGDIDPAG is not null and mgdcocre=1
SQL Server在这做什么?现在,mgdcocre是varchar,但1是整数。因此,SQL Server隐式将mgdcocre
列中的所有varchars转换为整数,以对1
进行整数比较。这会失败,因为至少有一个varchars表示转换为整数的数字太大。
解决方案:
select MGDIDENT
from MGDMOCOT
where MGDIDPAG is not null and mgdcocre='1'
这里比较两个varchars,因此不需要强制转换。