Ответ 1
Используйте следующее предложение ORDER BY
:
ORDER BY IF(name RLIKE '^[a-z]', 1, 2), name
Я ищу некоторые настройки в заказе 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
Используйте следующее предложение ORDER BY
:
ORDER BY IF(name RLIKE '^[a-z]', 1, 2), name
Ref this
SELECT name FROM list ORDER BY name * 1 ASC
Edited
SELECT name FROM list ORDER BY name * 1, name ASC
Вы можете попробовать что-то вроде этого:
SELECT
name
FROM
list
ORDER BY
IF(name REGEXP '^[0-9]', CONCAT('zz',name),name) ASC
Итак, если ваше имя начинается с цифры, вы объединяете "zz" в начале (так, чтобы он был последним)
другой путь без RLIKE:
ORDER BY LENGTH(name), name
Попробуйте это.
Простой, чтобы получить ответ
SELECT name from list ORDER BY (name +0) ASC ,name ASC