解决 MySQL SELECT 查询中的浮点比较问题
在 MySQL SELECT 查询中,比较浮点值时可能会出现精度问题。为了解决这个问题,让我们探讨以下问题:
问题:
为什么带有浮点相等比较的 SELECT 查询会失败,而删除比较会返回正确的结果排?如何在运算前将浮点数转换为2位才能成功匹配?
答案:
问题源于MySQL固有的浮点精度。为了解决这个问题,我们可以将 float 列转换为小数类型,这样可以确保精确到特定位数。
解决方案:
以下查询成功匹配将浮点值转换为小数:
SELECT * FROM `table` WHERE CAST(`price` AS DECIMAL) = CAST(101.31 AS DECIMAL);
替代解决方案:
或者,您可以考虑将价格列更改为 DECIMAL,这更适合用于处理货币值并提供更好的精确控制。
以上是为什么我的 MySQL SELECT 查询在比较浮点数时失败,但在删除比较时却有效?的详细内容。更多信息请关注PHP中文网其他相关文章!