使用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
时,它会返回空集由于
答案 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
如果需要,范围可以更窄。