У меня есть данные (это идентификатор):
SB-1 SB-10 SB-9
Мой запрос
SELECT * FROM sb ORDER BY id DESC
Результат:
SB-9 SB-10 SB-1
Я хочу свой результатэто:
SB-10 SB-9 SB-1
Как запрос для этого?
Следующий запрос должен делать то, что вы хотите:
SELECT * FROM sb ORDER BY LENGTH(id) DESC, id DESC
select * , cast( replace(id,'SB-','') as int ) as newid from tablename order by newid desc
используйте SUBSTRING_INDEX и выберите значение int, затем сделайте заказ на
SUBSTRING_INDEX
select * , cast( SUBSTRING_INDEX(column_name,'-',-1) as unsigned ) as v from table_name order by v desc
и нуждаетесь в явном преобразовании
демонстрационная ссылка