1.表结构:
CREATE TABLE TEST.AREATB
(
ID NUMBER(6,0) NOT NULL,
AREANAME VARCHAR2(256),
PARENTAREAID NUMBER(6,0)
)
2.数据:
1 |
中国 |
-1 |
2 |
北京 |
1 |
3 |
安徽 |
1 |
4 |
合肥 |
3 |
5 |
宣武区 |
2 |
3.SQL:语句
select id, areaname, substr(sys_connect_by_path(areaname,','),2)
from AREATB bb
start with parentareaid = -1
connect by parentareaid=prior id
4.结果:
1 |
中国 |
中国 |
2 |
北京 |
中国,北京 |
5 |
宣武区 |
中国,北京,宣武区 |
3 |
安徽 |
中国,安徽 |
4 |
合肥 |
中国,安徽,合肥 |
5.函数解释:
sys_connect_by_path 函数主要作用是可以把一个父节点下的所有子节点通过某个字符进行区分,然后连接在一个列中显示