mysql查找带有小数部分的行

时间:2014-02-17 13:43:46

标签: mysql floor

使用MySQL命令提示符,我想选择包含数字的特定小数部分的所有行。

我有一个FLOAT类型的字段叫做priority&我想找到优先级为X.2的所有行,其中X可以是任何整数。

有没有办法使用MOD或FLOOR函数在查询中提取“.2”?

我试过了:

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

但是当我知道至少有100行包含优先级为X.2

时,它会返回空集

由于

2 个答案:

答案 0 :(得分:2)

在MySQL中使用LIKE子句怎么样?

SELECT * FROM table WHERE priority LIKE %.2%

答案 1 :(得分: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

如果需要,范围可以更窄。