无法在float值上实现WHERE子句

时间:2011-05-07 14:10:18

标签: mysql floating-point where-clause

我在表中有一个4.3浮点值。

发送该请求时:

SELECT * FROM mytable WHERE floatfield = 4.3

返回空结果。

即使在尝试时也是如此;

SELECT * FROM mytable WHERE floatfield = '4.3'

有什么问题?

3 个答案:

答案 0 :(得分:4)

Floating-point does not have infinite precision4.3无法用有限数量的二进制数字表示。

答案 1 :(得分:2)

使用列LIKE浮点而不是Column = float。不要在这背后得到术语,它可能只是从值的起点匹配或删除看不见的精确数字并将其视为varchar。

答案 2 :(得分:0)

您可以使用以下功能:

DELIMITER $$
DROP FUNCTION IF EXISTS `x_cast_to_float`$$
CREATE FUNCTION `x_cast_to_float`(number FLOAT) RETURNS FLOAT
    NO SQL
    BEGIN
        RETURN number;
    END$$
DELIMITER ;

SELECT * FROM mytable WHERE floatfield = x_cast_to_float(4.3)<br />