Oracle层级查询函数:
sys_connect_by_path :主要用于树查询(层次查询) 以及 多列转行。
其语法一般为:
select ... sys_connect_by_path(字段名,'连接符号') from table
start with ... connect by ... prior
start with:定义查找起始节点,以此开始向下查找
START WITH 子句为可选项,若该子句被省略,则表示所有满足查询条件的行作为根节点。
connect by prior 父子关系的对应
prior跟父节点列parentid放在一起,就是往父结点方向遍历;
prior跟子结点列id放在一起,则往叶子结点方向遍历,
parentid、id两列谁放在“=”前都无所谓,关键是prior跟谁在一起。
注:
sys_connect_by_path()函数必须和connect by 关键字一起使用。
连接符号不要用'-',容易出错
补充函数:
a. LTRIM(字符串,'要删除的字符串'):删除左边出现的字符
b. instr函数:返回要截取的字符串在源字符串中的位置
格式一:instr( string1, string2 ) / instr(源字符串, 目标字符串)
格式二:instr( string1, string2 [, start_position [, nth_appearance ] ] ) / instr(源字符串, 目标字符串, 起始位置, 匹配序号)