小编use*_*516的帖子

算术溢出与SQL Server 2008中的bigints

我在SQL Server 2008中转换为bigint时出现算术溢出问题.以下令我困惑.

这有效:

select 58356453 * 228204732751
Run Code Online (Sandbox Code Playgroud)

答案:13317218761161292203

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

select convert(bigint, 58356453 * 228204732751)
Run Code Online (Sandbox Code Playgroud)

结果:算术溢出

begin 
    declare @key bigint = 58356453,
        @workingVal bigint,
        @primeMultiplier1 bigint = 228204732751;
    set @workingVal = @key * @primeMultiplier1;
end;
Run Code Online (Sandbox Code Playgroud)

结果:算术溢出

我在这里错过了什么?我也试过"cast(BigNumber as bigint)"(不认为它与转换有任何不同),以及算术运算之前/之后的各种转换组合.

而且,这是在Windows Server 2008 x64上

sql-server sql-server-2008

6
推荐指数
1
解决办法
952
查看次数

标签 统计

sql-server ×1

sql-server-2008 ×1