숫자정렬이 아닌 문자정렬이라 그렇습니다.
즉, 테스트(십) 이 아닌 테스트(일일) 로 정렬되는 것입니다.
그런데 아이디가 항상 (문자 + 숫자) 형태일까요?
(문자) 형태?
(문자 + 숫자 + 문자) 형태?
(문자 + 숫자 + 문자 + 숫자) 형태?
(문자 + 숫자 + 문자 + 숫자 + 문자) 형태?
그 이상의 형태? 특수문자 포함 등등, 다양한 형태가 있을 듯 합니다.
위에 제시된 예만 보면 문자와 숫자로 분리하여 정렬하면 될 듯 하지만
다양한 형태가 존재한다면? 케이스별로 다른 기준이 적용될 수 있습니다.
혼합 형태의 경우엔 정렬 기준도 애매하구요.
with t(id, nm) as ( select 'test11', '홍길동' from dual union all select 'test2', '이순신' from dual union all select 'test10', '김유신' from dual union all select 'test1', '안중근' from dual ) select * from t order by regexp_replace(id,'[0-9]'), to_number(regexp_replace(id,'[^0-9]'))
이렇게 하면 되겠지만 대량일 경우 인덱스에 의한 소트가 안 되어 소트 부하는 있을듯하네요.