我知道过去也曾问过类似的问题,但我认为我的情况略有不同。我有一列具有对数值的列,我正尝试使用以下公式将它们取反:SELECT POWER(10,CAST(9.695262723 AS NUMERIC(30,15)))
假设值9.695262723
是该列的值之一。尝试运行此查询时,出现错误消息Arithmetic overflow error for type int, value = 4957500001.400178
。
另一方面,相同的查询对于较小的值也适用,例如 SELECT POWER(10,CAST(8.662644523 AS NUMERIC(30,15)))
我如何克服该错误并计算我拥有的log10项的逆值?仅作参考,表中的较大值(以log10刻度)为12.27256096
。
这里的问题是您的第一个输入参数(10
),默认情况下,SQL Server将其视为datatype int
。int
的最大值为2 ^ 31-1(2,147,483,647),并且数字4,957,500,001远大于此值,因此您需要使用bigint
:
SELECT POWER(CONVERT(bigint,10),CONVERT(numeric(30,15),9.695262723));
编辑:如果您需要保留小数位,则使用numeric
具有足够大的比例和精度的a代替bigint
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句