首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL Server 2008中带有bigints的算术溢出

SQL Server 2008中带有bigints的算术溢出
EN

Stack Overflow用户
提问于 2010-12-15 04:40:15
回答 2查看 963关注 0票数 6

在SQL Server2008中转换为bigint时,我遇到了算术溢出问题。下面的内容让我感到困惑。

这是可行的:

代码语言:javascript
复制
select 58356453 * 228204732751

答案: 13317218761161292203

但是,所有其他涉及显式转换的尝试都会失败。

代码语言:javascript
复制
select convert(bigint, 58356453 * 228204732751)

结果:算术溢出

代码语言:javascript
复制
begin 
    declare @key bigint = 58356453,
        @workingVal bigint,
        @primeMultiplier1 bigint = 228204732751;
    set @workingVal = @key * @primeMultiplier1;
end;

结果:算术溢出

这里我漏掉了什么?我也尝试过"cast(BigNumber as bigint)“(我不认为它与convert有什么不同),以及算术运算之前/之后的各种转换组合。

这是在Windows Server2008 x64上

EN

回答 2

Stack Overflow用户

发布于 2010-12-15 04:52:01

bigint的最大值为

9223372036854775807

你要回来了

13317218761161292203。

我建议将其转换为具有足够精度的小数。

票数 2
EN

Stack Overflow用户

发布于 2010-12-15 04:56:51

您应该使用numeric datatype

代码语言:javascript
复制
select cast(13317218761161292203 as numeric(38))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4443991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档