Sql server SQL Server 2008中的算术溢出w/bigints
在SQLServer2008中转换为bigint时,我遇到算术溢出问题。下面的内容让我很困惑 这项工作:Sql server SQL Server 2008中的算术溢出w/bigints,sql-server,sql-server-2008,Sql Server,Sql Server 2008,在SQLServer2008中转换为bigint时,我遇到算术溢出问题。下面的内容让我很困惑 这项工作: select 58356453 * 228204732751 答复:13317218761161292203 但是,所有其他涉及显式转换的尝试都失败了 select convert(bigint, 58356453 * 228204732751) 结果:算术溢出 begin declare @key bigint = 58356453, @workingVal
select 58356453 * 228204732751
答复:13317218761161292203
但是,所有其他涉及显式转换的尝试都失败了
select convert(bigint, 58356453 * 228204732751)
结果:算术溢出
begin
declare @key bigint = 58356453,
@workingVal bigint,
@primeMultiplier1 bigint = 228204732751;
set @workingVal = @key * @primeMultiplier1;
end;
结果:算术溢出
begin
declare @key bigint = 58356453,
@workingVal bigint,
@primeMultiplier1 bigint = 228204732751;
set @workingVal = @key * @primeMultiplier1;
end;
我错过了什么?我还尝试了“cast(BigNumber作为bigint)”(不要认为它与convert有什么不同),以及算术运算前后的各种转换组合
这是在Windows Server 2008 x64上,bigint的最大值为 你回来了 13317218761161292203 我建议将小数点转换为具有足够精度的小数点。您应该使用 我尝试了选择convert(bigint,58356453)*convert(bigint,228204732751),但出现了相同的错误+1。选择(58356453*228204732751)-9223372036854775807=4093846724306516396