Так как количество компонентов является переменным и только последний является цифрой c, вы можете просто упорядочить всю строку, но добавив первые 0 к последнему компоненту.
Это можно сделать следующим образом:
ORDER BY SUBSTR(col, 1, INSTR(col, ' ', -1)) || LPAD(SUBSTR(col, INSTR(col, ' ', -1) + 1), 8, '0');
Т.е. извлеките всю строку до последнего пробела, затем добавьте первые 0 к последней части и объедините 2 подстроки.
РЕДАКТИРОВАТЬ: Это из Курс заставляет first second 1
следовать за first second third 2
. Это потому, что цифры идут после букв.
Не уверен, что это именно то, что вам нужно.
ДРУГОЕ РЕДАКТИРОВАНИЕ: Не уверен, что разделитель всегда один пробел или может быть кратным.
Если это так, создайте выражение, которое заменяет несколько пробелов на один.
См. Oracle Обновите несколько пробелов в столбце одним пробелом
ОБНОВЛЕНИЕ:
Следующее выражение извлекает целое число после последнего пробела:
SUBSTR(col, INSTR(col, ' ', -1) + 1)
Выражение INSTR(col, ' ', -1)
возвращает позицию последнего пробела.
После этого принимайте подстроку, начиная с первый символ после этого последнего пробела.