Oracle的SYS_CONNECT_BY_PATH函数 用法

Oracle的SYS_CONNECT_BY_PATH函数

SYS_CONNECT_BY_PATH(column_name,‘分隔符’)函数
第一个参数是形成树形式的字段,第二个参数是父级和其子级分隔显示用的分隔符

其实SYS_CONNECT_BY_PATH这个函数是oracle9i才新提出来的!
它一定要和connect by子句合用!

补充:结构化查询

START WITH …CONNNECT BY PRIOR基本语法是:

SELECT …FROM
WHERE (过滤返回记录,仅过滤被限定节点,其根节点和子节点均不受影响)
START WITH (根节点,可以指定多个节点)
CONNECT BY PRIOR= (连接条件,PRIOR置于等号前,则从根节点到叶节点开始检索;置于等号后,则从叶节点到根节点开始检索)

如:select distinct sys_connect_by_path((select b.langname1 from bcode b where b.bcode=m.bcode), ‘–>’) as bpath ,m.bcode from mbcode m //该表包含很多部门和子部门
where m.dtype=‘01’ and m.ledate>sysdate //过滤出有效的部门
start with m.bcode = ‘00000004’ //从最大的部门级 根节点开始
connect by prior m.bcode =m.pbcode //子级和父级

START WITH 代表你要开始遍历的的节点!
CONNECT BY PRIOR 是标示父子关系的对应!
CONNECT BY PRIOR= (连接条件,PRIOR置于等号前,则从根节点到叶节点开始检索;置于等号后,则从叶节点到根节点开始检索)

在Oracle中,SYS_CONNECT_BY_PATH函数主要作用是可以把一个父节点下的所有子节点通过某个字符进行区分,然后连接在一个列中显示。
sys_connect_by_path(字段名, 2个字段之间的连接符号),注意这里的连接符号不要使用逗号,oracle会报错,如果一定要用,可以使用replace替换一下,方法如下REPLACE(字段名,原字符,’,’)。