sql过滤sql server中的十进制和非十进制整数

时间:2014-01-17 09:04:31

标签: sql sql-server

我有下表

marks
45
45.5
56
56
56.6

我需要编写一个查询来列出不是十进制值的标记,即

marks
45
56
56

是否有任何sql查询来过滤sql server中的十进制和非十进制整数

4 个答案:

答案 0 :(得分:5)

也许:

SELECT * FROM dbo.Table1
   WHERE CEILING(marks) = FLOOR(marks)

Demo

Comparing CEILING and FLOOR

答案 1 :(得分:0)

SELECT *
FROM t
WHERE value NOT LIKE '%.%'

答案 2 :(得分:0)

DECLARE @t TABLE ( marks NUMERIC(10,2))
INSERT INTO @t VALUES 
(45),(45.5),(56),(56),(56.6)

SELECT marks 
FROM @t 
WHERE  marks = ROUND(marks , 0)

答案 3 :(得分:0)

如果您使用的是SQL Server 2012,则可以使用[TRY_PARSE][1]

在下面的示例中,TRY_PARSE在值为INT时返回INT,否则返回NULL,因此IS NOT NULL过滤掉这些行。

SELECT *
FROM table
WHERE TRY_PARSE(CAST(Marks AS varchar(20)) AS INT) IS NOT NULL