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

ЗАКАЗАТЬ алфавитом сначала, а затем по номеру

Я ищу некоторые настройки в заказе mysql, я обычно выбираю запись из таблицы, а затем заказываю запись по имени (varchar) ASC , но число всегда приходит первым

вот пример моего вопроса (обратите внимание: mysql сначала сортирует запись с 0-9)

SELECT name FROM list ORDER BY name ASC
record returned:
1 star
2 star
9 slice
Ape
Age
Beg
Bell
Fish
Zoo

То, что я хочу, - это порядок алфавита, а затем следующий номер

Требуемый вывод

Ape
Age
Beg
Bell
Fish
Zoo
1 star
2 star
9 slice
4b9b3361

Ответ 1

Используйте следующее предложение ORDER BY:

ORDER BY IF(name RLIKE '^[a-z]', 1, 2), name

Ответ 2

Ref this

SELECT name FROM list ORDER BY name * 1 ASC

Edited

SELECT name FROM list ORDER BY name * 1, name ASC

Ответ 3

Вы можете попробовать что-то вроде этого:

SELECT 
    name 
FROM 
    list 
ORDER BY 
    IF(name REGEXP '^[0-9]', CONCAT('zz',name),name) ASC

Итак, если ваше имя начинается с цифры, вы объединяете "zz" в начале (так, чтобы он был последним)

Ответ 4

другой путь без RLIKE:

ORDER BY LENGTH(name), name

Ответ 5

Попробуйте это.

Простой, чтобы получить ответ

SELECT name  from list ORDER BY (name +0) ASC ,name ASC