У меня есть поле varchar в моей таблице, и я хочу его отсортировать. Но мне нужно обработать это поле как целое. Значение, если сортировать как текст, порядок "19,2,20", но я хочу получить правильный заказ "2,19,20".
Кто-нибудь может мне помочь?
Ответ 1
Мне как-то не удалось запустить запрос с помощью CAST. Я всегда получал Error Code: 1064 near "DECIMAL" (или другой числовой тип, который я выбрал). Итак, я нашел другой способ отсортировать varchar как числа:
SELECT *
FROM mytable
ORDER BY ABS(mycol)
Немного проще и работает в моем случае.
Ответ 2
SELECT *
FROM mytable
ORDER BY
CAST(mycol AS DECIMAL)
Ответ 3
Вот решение
SELECT * FROM MyTable ORDER BY ABS(MyCol);
Ответ 4
Все остальные ответы используют ABS, который преобразует значения в абсолютные (положительные) значения, считая, что целые числа положительны. Лучшим решением было бы использовать * 1:
Вы можете ABS() для этой цели. ABS() - математическая функция, которая возвращает absolute (positive) value of the specified expression. Таким образом, запрос будет выглядеть примерно так.
SELECT * FROM MyTable ORDER BY ABS(MyCol);
Ответ 6
Вы можете заказать поле varchar, используя этот код в соответствии с вашими требуемыми