use*_*516 6 sql-server sql-server-2008
我在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上