1

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

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

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

我试过了:

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

但是当我知道至少有 100 行包含优先级为 X.2 时,它返回空集

谢谢

4

2 回答 2

3

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

SELECT * FROM table WHERE priority LIKE %.2%

于 2014-02-17T13:47:48.843 回答
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

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

于 2014-02-17T13:48:01.473 回答