在 MySQL 中选择浮点数

2022-08-30 15:52:54

我正在尝试根据标识符和价格对表进行匹配,例如:SELECT

SELECT * FROM `table` WHERE `ident`='ident23' AND `price`='101.31';

上述操作返回零行,而如果删除该位,则返回正确的行。price='101.31'

正在做一个...

SELECT * FROM `table`;

返回与上面相同的行,并非常清楚地说明 。然而,选择无法匹配它。改变使它工作 - 但这并不是一个解决方案。price='101.31'=<=

有没有办法在执行操作之前将MySQL浮点数转换为2位数字,从而使上述工作(或其他一些解决方案)?SELECT

谢谢!


答案 1

转换为小数对我来说有效:

SELECT * FROM table WHERE CAST(price AS DECIMAL) = CAST(101.31 AS DECIMAL);

但是,您可能首先要考虑使该列成为 DECIMAL。DECIMAL通常被认为是处理货币值时使用的最佳类型。price


答案 2

它不起作用,因为浮点数本质上是不精确的。实际值可能类似于'101.31000000000001'您可以首先在其上使用 ROUND() 将其舍入到 2 位,或者最好使用 DECIMAL 类型而不是浮点数。


推荐