SQL Server不支持';不接受分数

SQL Server不支持';不接受分数,sql,sql-server-2008,Sql,Sql Server 2008,SQL Server不接受十进制。我该如何做到这一点?它不接受0.9 SELECT TOP (250000 * 0.9 / 100) [FIRST], [MIDDLE], [LAST], [PHONE], [ADDRESS], [CITY], [STATE] FROM [7.Exporting].[dbo].[table1] 错误是 为TOP或FETCH子句行计数参数提供的行数必须为整数 top仅适用于整数 SELECT TOP (any int value) [FIRST

SQL Server不接受十进制。我该如何做到这一点?它不接受0.9

SELECT TOP (250000 * 0.9 / 100) 
    [FIRST], [MIDDLE], [LAST], [PHONE], [ADDRESS], [CITY], [STATE]
FROM 
    [7.Exporting].[dbo].[table1]
错误是

为TOP或FETCH子句行计数参数提供的行数必须为整数


top
仅适用于整数

SELECT TOP (any int value) [FIRST],[MIDDLE],[LAST],[PHONE],[ADDRESS],[CITY],[STATE]
      FROM [7.Exporting].[dbo].[table1]

可以使用表达式。只需删除小数点:

select TOP (250000*9/1000) . . .
或者,使用显式的
cast()


我很惊讶这能起作用,但它似乎能起作用。

因为TOP只适用于integer,所以您必须强制转换为integer:

SELECT TOP (CAST (250000*0.9/100 AS INT)) [FIRST],[MIDDLE],[LAST],[PHONE],[ADDRESS], 
    [CITY],[STATE]
FROM [7.Exporting].[dbo].[table1]

令人惊讶的@Gordon对问题和答案都有好处。
SELECT TOP (CAST (250000*0.9/100 AS INT)) [FIRST],[MIDDLE],[LAST],[PHONE],[ADDRESS], 
    [CITY],[STATE]
FROM [7.Exporting].[dbo].[table1]