Подтвердить что ты не робот

Mysql order varchar field как целое

У меня есть поле varchar в моей таблице, и я хочу его отсортировать. Но мне нужно обработать это поле как целое. Значение, если сортировать как текст, порядок "19,2,20", но я хочу получить правильный заказ "2,19,20".

Кто-нибудь может мне помочь?

4b9b3361

Ответ 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:

SELECT * FROM mytable ORDER BY mycol * 1

Это предотвратит отливку отрицательных чисел в положительные. Вдохновленный: номер строки сортировки mysql

Ответ 5

Вы можете ABS() для этой цели. ABS() - математическая функция, которая возвращает absolute (positive) value of the specified expression. Таким образом, запрос будет выглядеть примерно так.

SELECT * FROM MyTable ORDER BY ABS(MyCol);

Ответ 6

Вы можете заказать поле varchar, используя этот код в соответствии с вашими требуемыми

SELECT * FROM mytable ORDER BY ABS(mycol)