我有一個SQL服務器數據庫非常大的表,我想所有在那裏小數列的值有一個小數部分> 0如何獲得列(小數)小數部分的值大於0的所有行?
例如行我有兩行:
"John Smith", 123.00
"Mary", 123.05
我的查詢應該只換句話說返回"Mary", 123.05
所以它應該返回 看起來像這樣X.0000所有行.... 1到X.9999999999 ...
我需要這個,看看我其實需要將我的列作爲小數。
我有一個SQL服務器數據庫非常大的表,我想所有在那裏小數列的值有一個小數部分> 0如何獲得列(小數)小數部分的值大於0的所有行?
例如行我有兩行:
"John Smith", 123.00
"Mary", 123.05
我的查詢應該只換句話說返回"Mary", 123.05
所以它應該返回 看起來像這樣X.0000所有行.... 1到X.9999999999 ...
我需要這個,看看我其實需要將我的列作爲小數。
您可以使用FLOOR()
來做到這一點。如果數字本身大於其值,則它必須有一個小數。
Select Name, Number
From Table
Where Number > Floor(Number)
如何:
WHERE my_column > FLOOR(my_column)
您可以在WHERE子句中使用ROUND
功能。
SELECT name, number
FROM yourtable
WHERE (ROUND(number,0)-number) != 0
輸出:
SQL小提琴:
可以使用的模本。
- EDIT--
刪除了關於此方法的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
只是一句話:這只是使用了精密的數據類型(十進制)時,工作可靠,而近似數據類型(FLOAT,DOUBLE)可能會報告那裏有沒有,反之亦然小數。但是,無論如何,FLOAT和DOUBLE很少用在數據庫中。 –
除了'FLOOR'外,你也可以嘗試模:'WHERE col M%OD 1 <> 0' – dnoeth