我有下表
marks
45
45.5
56
56
56.6
我需要编写一个查询来列出不是十进制值的标记,即
marks
45
56
56
是否有任何sql查询来过滤sql server中的十进制和非十进制整数
答案 0 :(得分:5)
答案 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