【发布时间】:2013-11-01 04:12:33
【问题描述】:
鉴于 Oracle 11gr2 中的以下树层次结构示例:
查询:
SELECT Lpad(ename,Length(ename) + LEVEL * 10 - 10,'-')
FROM emp
START WITH mgr IS NULL
CONNECT BY PRIOR empno = mgr
Result:
KING
----------JONES
--------------------SCOTT
------------------------------ADAMS
--------------------FORD
------------------------------SMITH
----------BLAKE
--------------------ALLEN
--------------------WARD
--------------------MARTIN
--------------------TURNER
--------------------JAMES
----------SAM
--------------------MILLER
我需要修剪我的树查询,以便每当 ename 以字符“S”、i.e. substr(ename,1,1) = 'S' 开头时,显示此值/分支,但随后忽略低于该值的所有内容,即在此级别之后不再显示任何内容。
因此,基于上述结果样本,新的结果样本将如下所示:
New Result:
KING
----------JONES
--------------------SCOTT
--------------------FORD
------------------------------SMITH
----------BLAKE
--------------------ALLEN
--------------------WARD
--------------------MARTIN
--------------------TURNER
--------------------JAMES
----------SAM
因此,子“ADAMS”和“MILLER”已从新结果中删除。
【问题讨论】:
标签: sql oracle plsql tree oracle11g