Вы должны отсортировать таблицу сначала по строковой части идентификатора перед da sh, а затем по номеру после da sh. Таким образом, вам нужны строковые функции для извлечения строки и числовой части c столбца:
select * from mytable
order by
substr(id, 1, instr(id, '-')),
substr(id, instr(id, '-') + 1) + 0
Оператор arithmeti c +
принудительно выполнит неявное преобразование части числительного c строки в число. Смотрите демо . Если структура идентификаторов точно соответствует вашим образцам данных, и в начале всегда присутствует 1 буква, за которой следует da sh, а затем число, код можно упростить:
select * from mytable
order by
substr(id, 1, 1),
substr(id, 3) + 0
Смотрите демо .
Результаты:
| id |
| ---- |
| B-1 |
| B-2 |
| B-10 |
| B-11 |