我在表中有一个4.3浮点值。
发送该请求时:
SELECT * FROM mytable WHERE floatfield = 4.3
返回空结果。
即使在尝试时也是如此;
SELECT * FROM mytable WHERE floatfield = '4.3'
有什么问题?
答案 0 :(得分:4)
Floating-point does not have infinite precision,4.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 />