我在SQL服务器数据库中有一个非常大的表,我希望获得十进制列的值具有小数部分的所有行> 0
例如,我有两行:
"John Smith", 123.00
"Mary", 123.05
我的查询应该只返回"Mary", 123.05
,换句话说它应该返回
所有看起来像这样的行X.0000 .... 1到X.9999999999 ...
我需要这个,看看我是否真的需要将我的列作为小数。
答案 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小提琴: