SQL/MariaDB SELECT * FROM ... WHERE 十进制数

SQL/MariaDB SELECT * FROM ... WHERE decimal number

我对 SELECT 语句有疑问。我想这样做:

SELECT * FROM `table1` WHERE x=0.0509

但它 return 没有行。我确定有一行的 x 值为 0.0509。如果我这样做:

SELECT * FROM `table1` WHERE x=0

它实际上 return 所有 x=0 的行,这意味着我的 sql 陈述总体上是正确的。我如何 SELECT 其中 x 是带小数的数字?我认为是小数导致了问题?

也许可以尝试在 2 个值之间平衡搜索词,如下所示:

SELECT * FROM table1 WHERE x BETWEEN 0 AND 0.1;

这对我有用:)

Photo here

编辑:我找不到任何方法来获得精确的小数点,但你可以这样做,但要使值:

SELECT * FROM table1 WHERE x BETWEEN 0.05089999 AND 0.05090001;

这可能是你做到这一点的最佳方式,我很确定

FLOAT为近似值。所以,存储的值不完全是 0.0509。您应该改用 DECIMAL

您可以随时将值转换为 DECIMAL

SELECT * 
FROM table1 
WHERE cast(x as decimal(10,4))=0.0509