求一个有关算术溢出的问题

liangx326 2011-04-26 06:37:30
select 1023559989+1456040530

会报“将 expression 转换为数据类型 int 时发生算术溢出错误。”

是什么意思啊?说两个数字过大么?

但是后面再加一位甚至更多,又能出结果了,比如:

select 1023559989123+1456040530456

结果是2479600519579,大家可以试试看?

请高手赐教一下这是怎么回事,多谢多谢!
...全文
127 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
马老虎 2011-04-27
  • 打赏
  • 举报
回复

SELECT CONVERT(INT ,2147483647)--2147483647
SELECT CONVERT(INT ,2147483648)--Arithmetic overflow error converting expression to data type int.
liangx326 2011-04-27
  • 打赏
  • 举报
回复
SELECT CONVERT(BIGINT,1023559989)+CONVERT(BIGINT,1456040530) 可以
select CONVERT(BIGINT,1023559989+1456040530) 不行
换成bigint以后可以,这个我知道,昨天就是这样解决的,但是我想知道的是,为什么更大的数字不换成bigint居然也可以,比如:select 1023559989123+1456040530456,这个和数字本身太大有关系么?
谢谢
马老虎 2011-04-26
  • 打赏
  • 举报
回复

SELECT CONVERT(BIGINT,1023559989)+CONVERT(BIGINT,1456040530)

qgqch2008 2011-04-26
  • 打赏
  • 举报
回复
select CONVERT(BIGINT,1023559989123+1456040530456)
试试这个呢
qgqch2008 2011-04-26
  • 打赏
  • 举报
回复
select 1023559989123+1456040530456/*
---------------------------------------
2479600519579

(1 行受影响)*/
2005正常
快溜 2011-04-26
  • 打赏
  • 举报
回复
隐式转换的问题。

22,209

社区成员

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

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