2

我知道过去也有人问过类似的问题,但我认为我的情况略有不同。我有一个具有对数值的列,我正在尝试使用以下公式反转它们: 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.

4

1 回答 1

6

这里的问题是您的第一个输入参数 ( 10),默认情况下 SQL 服务器会将其视为 datatype intint最大值为 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.

于 2018-06-13T09:24:36.780 回答