Сортировка столбца VARCHAR как FLOAT с использованием оператора CAST не работает в MySQL

146
17

Я не могу найти способ сортировки столбца varchar, отлитого как float. Вот мой запрос SQL:


SELECT guid, number FROM table ORDER BY 'CAST(number AS FLOAT) DESC'

Столбец "число" определяется следующим образом:


number  varchar(20) ascii_general_ci

И значения, определенные в этом столбце для моего теста:


0.00
200.00
20.00
100.00

MySQL полностью игнорирует оператор CAST и сортирует столбцы с помощью guid...


Есть ли ошибка в MySQL или я сделал что-то неправильно?

спросил(а) 2012-05-17T13:11:00+04:00 8 лет, 8 месяцев назад
1
Решение
242

Попробуйте этот трюк (помогает сортировать строки как числа) -


SELECT guid, number FROM table ORDER BY number * 1 DESC

Это поможет MySQL вывести строку в число.

Другое решение -


...CAST(value as DECIMAL(10,5))

ответил(а) 2012-05-17T13:28:00+04:00 8 лет, 8 месяцев назад
42

Если вы приняли GUID, размер должен быть varchar(40)
Установлено, что вы можете использовать uuid()


Я сделал это с помощью

select uuid(), number order by 'cast(number as float) desc';

Он работает нормально. Если вы этого не хотите, можете ли вы отправить весь код?

ответил(а) 2012-05-17T13:38:00+04:00 8 лет, 8 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема