高分求解,请进!!expression 转换为数据类型 int 时出现算术溢出错误

newty_won 2009-04-29 06:55:25
update IPInfo
set ipstar=256*256*256*IPStar1+256*256*IPStar2+256*IPStar3+IPStar4
IPEnd=256*256*256*IPEnd1+256*256*IPEnd2+256*IPEnd3+IPEnd4


上面这段代码,是更改ip数据库中的ipstar和IPEnd。

ipstar和ipend的字段类型都是varcahr(16)

IPStar1,IPStar2,IPStar3, IPStar4,IPEnd1, IPEnd2 IPEnd3 IPEnd4 是int类型
但是执行语句的时候 提示:将 expression 转换为数据类型 int 时出现算术溢出错误。

我试着将ipstar和ipend的字段类型改得更大,如varcahr(200)但是都无效,为什么呢?
...全文
622 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ai_li7758521 2009-04-29
  • 打赏
  • 举报
回复
是该用bigint字段
newty_won 2009-04-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 liangCK 的回复:]
update IPInfo
set ipstar=CAST(256*256*256 AS BIGINT)*IPStar1+256*256*IPStar2+256*IPStar3+IPStar4
IPEnd=256*256*256*IPEnd1+256*256*IPEnd2+256*IPEnd3+IPEnd4
[/Quote]

正解!!!!!!!!谢谢了!!
sdhdy 2009-04-29
  • 打赏
  • 举报
回复
使用 bigint 数据
整型值超过 int 数据类型支持的范围时,将使用 bigint 数据类型。为了实现兼容性,int 数据类型仍保留为 Microsoft® SQL Server™ 中的主要整型数据类型。

除非明确说明,否则,那些接受 int 表达式作为其参数的函数、语句和系统存储过程,都没有改变为支持将 bigint 表达式隐性转换为这些参数。这样,只有当 bigint 值在 int 数据类型所支持的范围内时,SQL Server 才将 bigint 隐性转换为 int。如果 bigint 表达式包含了一个在 int 数据类型支持范围之外的值,就会在运行时出现转换错误。

htl258_Tony 2009-04-29
  • 打赏
  • 举报
回复
用 bigint 字段类型
liangCK 2009-04-29
  • 打赏
  • 举报
回复
update IPInfo
set ipstar=CAST(256*256*256 AS BIGINT)*IPStar1+256*256*IPStar2+256*IPStar3+IPStar4
IPEnd=256*256*256*IPEnd1+256*256*IPEnd2+256*IPEnd3+IPEnd4

22,294

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧