ОК, благодаря комментатору, теперь рабочая версия. Это сортирует по двум делам, в порядке статьи:
select *
from (
select '10-20' as col1
union all select '20-40'
union all select '50-60'
union all select 'v'
union all select 'k'
union all select 'r'
union all select 'a'
union all select '12 month'
union all select '1 month'
) s1
order by
case
when col1 rlike '[0-9][0-9]-[0-9][0-9]' then 1
when col1 rlike '[0-9]+ month' then 3
else 2
end
, case
when col1 rlike '[0-9][0-9]-[0-9][0-9]' then cast(col1 as decimal)
when col1 rlike '[0-9]+ month' then cast(col1 as decimal)
else col1
end
Первый случай ставит категории в следующем порядке: 00-00, а затем другие вещи, и в конце концов месяцев. Второй случай преобразует столбцы в десятичные числа, если это возможно.
является его 1 пример или 3 примера? –
1 пример – cosy
Возможный дубликат [Природная сортировка в MySQL] (http://stackoverflow.com/questions/153633/natural-sort-in-mysql) – jball