如何获得列(十进制)小数部分的值为>的所有行? 0?

时间:2015-10-26 14:38:08

标签: sql sql-server

我在SQL服务器数据库中有一个非常大的表,我希望获得十进制列的值具有小数部分的所有行> 0

例如,我有两行:

"John Smith", 123.00
"Mary", 123.05

我的查询应该只返回"Mary", 123.05,换句话说它应该返回 所有看起来像这样的行X.0000 .... 1到X.9999999999 ...

我需要这个,看看我是否真的需要将我的列作为小数。

4 个答案:

答案 0 :(得分:2)

你可以使用modulo。

- 编辑 -

删除了关于此方法的SARGability的错误陈述。

declare @Something table
(
    SomeName varchar(20),
    SomeValue numeric(9,2)
)

insert @Something
select 'John Smith', 123.00 union all
select 'Mary', 123.05 

select *
from @Something
where SomeValue % 1 > 0

答案 1 :(得分:1)

您可以使用FLOOR()执行此操作。如果数字本身大于其FLOOR ed值,则必须具有小数。

Select  Name, Number
From    Table
Where   Number > Floor(Number)

答案 2 :(得分:1)

这个怎么样:

$

答案 3 :(得分:1)

您可以在WHERE子句中使用ROUND函数。

SELECT name, number
FROM yourtable
WHERE (ROUND(number,0)-number) != 0

输出:

SQL小提琴: