Сортировка по подстрокам
Задача
Требуется сортировать результаты запроса по частям строки. Напрмер, имена и должности служащих, возвращенные из таблицы EMP, должны быть упорядочены по последним двум символам поля должности.
Решение
Используйте в операторе ORDER BY функцию SUBSTR:
select e.ename, e.job
from emp e
order by substr(e.job, length(e.job)-2);
ENAME JOB
———- ———-
KING PRESIDENT
MILLER CLERK
JAMES CLERK
ADAMS CLERK
SMITH CLERK
BLAKE MANAGER
JONES MANAGER
CLARK MANAGER
MARTIN SALESMAN
TURNER SALESMAN
WARD SALESMAN
ALLEN SALESMAN
FORD ANALYST
SCOTT ANALYST
14 rows selected
Обсуждение
Чтобы сортировать по последним двум символам строки, находим конец строки (что соответствуе ее длине) и вычитаем 2. Таким образом, начальная позиция будет располагаться на предпоследнем символе строки. Теперь выбираем все символы после этой позиции.