У меня в таблице есть значение с плавающей запятой 4,3.
При отправке запроса:
SELECT * FROM mytable WHERE floatfield = 4.3
возвращает пустой результат.
Даже при попытке;
SELECT * FROM mytable WHERE floatfield = '4.3'
В чем проблема?
Плавающая точка не имеет бесконечной точности , и 4.3 не может быть точно представлено конечным числом двоичных цифр.
4.3
Используйте Column LIKE float вместо Column = float. Не используйте терминологию, стоящую за этим, она, вероятно, просто совпадает с началом значения или вырежет невидимую прецизионную цифру и относится к ней как к varchar.
Вы можете использовать следующую функцию:
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 />