主要是通过replace和translate来实现 SQL> create view v_tt 2 as 3 select ename||' '||deptno as data 4 from emp; View created. SQL> select * from v_tt; DATA --------------------------------------------------- SMITH 20 ALLEN 30 WARD 30 JONES 20 MARTIN 30 BLAKE 30 CLARK 10 SCOTT 20 KING 10 TURNER 30 ADAMS 20 DATA --------------------------------------------------- JAMES 30 FORD 20 MILLER 10 14 rows selected. //by deptno SQL> select * from v_tt 2 order by replace(data,replace(translate(data,'0123456789','##########'),'#' ,''),''); DATA --------------------------------------------------- CLARK 10 KING 10 MILLER 10 JONES 20 FORD 20 ADAMS 20 SMITH 20 SCOTT 20 WARD 30 TURNER 30 ALLEN 30 DATA --------------------------------------------------- JAMES 30 BLAKE 30 MARTIN 30 14 rows selected. //by name SQL> select * from v_tt 2 order by data,replace(translate(data,'0123456789','##########'),'#',''); DATA --------------------------------------------------- ADAMS 20 ALLEN 30 BLAKE 30 CLARK 10 FORD 20 JAMES 30 JONES 20 KING 10 MARTIN 30 MILLER 10 SCOTT 20 DATA --------------------------------------------------- SMITH 20 TURNER 30 WARD 30 14 rows selected.