SQL Server:BIGINT上的算术函数失去精度

时间:2016-08-03 18:50:48

标签: sql-server

我使用的是SQL Server 2000.如果新版本可以解决这个问题,我会升级。

考虑bigint列中的以下记录:

1000000000000000000
1000000200000000000
1000000200000100000
1000000200000000001
1000000200000000100

我认为以下SELECT语句会产生1条记录,但它会返回一个空集:

SELECT * 
FROM table 
WHERE number/100 <> FLOOR(number/100)

如果SQL Server提供BIGINT数据类型,那么它肯定也应该处理算法吗?

1 个答案:

答案 0 :(得分:4)

INT除以INT返回INT。只需在您的denom中添加小数

Declare @Table table (number bigint)
Insert into @Table values
(1000000000000000000),
(1000000200000000000),
(1000000200000100000),
(1000000200000000001),
(1000000200000000100)

SELECT * FROM @table WHERE number/100. <> FLOOR(number/100.)

返回

mumber
1000000200000000001