我使用的是SQL Server 2000.如果新版本可以解决这个问题,我会升级。
考虑bigint
列中的以下记录:
1000000000000000000
1000000200000000000
1000000200000100000
1000000200000000001
1000000200000000100
我认为以下SELECT
语句会产生1条记录,但它会返回一个空集:
SELECT *
FROM table
WHERE number/100 <> FLOOR(number/100)
如果SQL Server提供BIGINT
数据类型,那么它肯定也应该处理算法吗?
答案 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