2014-02-17 30 views
1

使用MySQL命令提示符,我想選擇包含數字的特定小數部分的所有行。mysql查找行數小數部分

我有一個FLOAT類型的字段叫做優先級&我想查找優先級爲X.2的所有行,其中X可以是任何整數。

有沒有辦法使用MOD或FLOOR函數在查詢中提取「.2」?

我已經試過:

SELECT * from table 
WHERE priority-FLOOR(priority) = .2 *(note the decimal point before the 2)* 

但它返回空集的時候,我知道有含X.2的優先級至少爲100行

感謝有關使用

回答

2

什麼LIKE子句在MySQL中?

SELECT * FROM table WHERE priority LIKE %.2%

+0

我很震驚,但它的工作原理:http://sqlfiddle.com/#!2/6d39a/1 –

+0

是的,我被困在這個很長一段時間後,搜索了幾個星期。它與數據類型FLOAT有關(不完全確定),然後有一天我失望了,我嘗試了LIKE並奇蹟般地工作。 :) – J2D8T

1

浮點數是出了名的善變與合作。這就是SQL提供固定長度的decimal數據類型的原因。

你想用什麼之間:

SELECT * 
from table 
WHERE priority-FLOOR(priority) between 0.15 and 0.25 

考慮將優先爲小數,而不是一個浮點數。

如果你有「更深」的優先級,像1.22,你正試圖避免的,然後做:

WHERE priority-FLOOR(priority) between 0.195 and 0.205 

範圍可以更窄,如果你需要。