Сравнение дробных значений (float) в MySQL

Опубликовано:

При запросах в MySQL связанные с сравнением дробных чисел (например, float) иногда возникают проблемы, что из-за особенности архитектуры вычислительной техники прямое сравнение не работает. Подробнее о зависимости сравнения чисел с точкой и вычислительной техники вы можете найти и прочесть в интернете, а сейчас попробуем решить данную задачу при помощи стандартных средств MySQL.

Представим, что у нас есть таблица с определенной колонкой “column_x” с типом “float”, где хранятся некоторые дробные значения. Нам нужно из этой таблицы выбрать все записи равные определенному значению в этой колонке, к примеру «1.678».

SELECT 
    *
FROM 
    `table_test`
WHERE
    CAST(`column_x` AS CHAR) = 1.678

То есть, исходя из запроса выше мы видим, что используем стандартную функцию «CAST», которая преобразует один тип в другой, что собственно в данном случае и нужно. Что самое интересное, так это то, что с данной конструкцией можно сравнивать дробные значения как напрямую “=”, так и с операторами “>”, “<“, “>=”, “<=”.