@MrSanta

Как выполнить SQL-запрос — BETWEEN для десятичных дробей?

Здравствуйте!

В базе данных MySQL 2 столбца, например a1 и a2, где хранятся различные числа, как целые так и десятичные. Тип данных VARCHAR.

Делаю запрос в БД - мне нужно вывести все промежуточные значения этих чисел из выбранной строки. Я использую следующий запрос:
SELECT * FROM `table` WHERE " . $data . " between a1 and a2

Он отлично работает с целыми числами, а вот с десятичными нет.

Как мне вывести диапазон десятичных чисел, если, например, a1 = 15.75 и a2 = 15.71 ?
  • Вопрос задан
  • 536 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега SQL
Седой и строгий
Как уже написал morricone85, varchar - это строковый тип. Чтобы сравнивать значения как числа и, как следствие, иметь возможность определить входит ли число в диапазон, требуется привести значения к числовому типу:
select * from `table` where " . $data . " between cast(a1 as real) and cast(a2 as real);

P.S. Очень плохая практика вставлять значения в запрос конкатенацией строк. Особенно, если значение пришло от пользователя. Если я передам вам в переменную $data строку "1 = 1; drop table `table`", вы потеряете данные.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@morricone85
varchar - это строковой тип данных)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы