wbsr
@wbsr
Программист - любитель

Как соcтавить MYSQL запрос?

У меня в БД MYSQL есть два поля (назовем их A и B) с типом TEXT в которых тем не менее хранятся целые числа

Мне нужно составить такой SELECT запрос чтобы разность этих чисел была больше чем заданное число

То есть что-то вроде SELECT * from mytable WHERE ((A - B) > 10)

Проблема в том что тип полей TEXT и я не могу его изменить так как БД уже заполнена

Вот так почему то не работает

SELECT * FROM mytable WHERE (((convert(A, INT))-(convert(B, INT))) > 10)

Как прямо в MYSQL запросе сконвертировать их в числа, вычислить разность и сравнить с числом 10?
  • Вопрос задан
  • 92 просмотра
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Проблема в том что тип полей TEXT и я не могу его изменить так как БД уже заполнен

Ерунда
ALTER TABLE `table` 
  CHANGE COLUMN `A` `A` INT,
  CHANGE COLUMN `B` `B` FLOAT;

Как прямо в MYSQL запросе сконвертировать их в числа

Незачем, в математических операциях MySQL сам пытается привести строки к числам.
Ответ написан
usdglander
@usdglander
Yipee-ki-yay
Почему вы используете CONVERT? Ведь CAST же.
SELECT * FROM mytable WHERE (CAST(`A` AS UNSIGNED) - CAST(`B` AS UNSIGNED)) > 10)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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