Вы можете использовать SUBSTRING
и CONVERT
:
SELECT stuff
FROM table
WHERE conditions
ORDER BY CONVERT(SUBSTRING(name_column, 6), SIGNED INTEGER);
Где name_column
- столбец со значениями «name-». SUBSTRING
удаляет все до шестого символа (то есть префикса "name-"), а затем CONVERT
преобразует левое в реальное целое число.
ОБНОВЛЕНИЕ : Учитывая изменяющиеся обстоятельства в комментариях (то есть префикс может быть любым), вам придется добавить LOCATE
в миксе:
ORDER BY CONVERT(SUBSTRING(name_column, LOCATE('-', name_column) + 1), SIGNED INTEGER);
Это, конечно, предполагает, что в нечисловом префиксе нет дефисов, но в соответствующем комментарии говорится, что:
name
может быть любой последовательностью букв
так что это должно быть безопасное предположение.