首页 > 数据库 >深入理解Oracle 的 connect by level

深入理解Oracle 的 connect by level

时间:2023-12-11 16:56:46浏览次数:40  
标签:aaa level pid connect Oracle id select

1、connect by

 

connect by 中的条件就表示了父子之间的连接关系

比如 connect by id = prior  pid

默认是从根开始,如connect by prior id = pid,表示构造树时,本记录的id是下条的pid,即找pid=本条id的记录做下条记录。

交换prior位置,表示从叶开始。如connect by id = prior pid,表示构造树时,本记录的pid是下条的id。
 ps:prior表示构造树的源头方向。

 

2、level

 

level是在树形结构中、表示层级的伪列

 

Level案例解释:

create table aaa(id varchar2(1));

insert into aaa (id) values ('a');
insert into aaa (id) values ('b');
insert into aaa (id) values ('c');

 

1.1、当我们查询level < 2时

select id,level from aaa connect by level < 2;

-- 即:
  a b c

 

1.2、当我们查询level < 3时

select id,level from aaa connect by level < 3;

-- 即:
  a        b       c
a b c    a b c   a b c

 

1.3、当我们查询level < 4时

select id,level from aaa connect by level < 4;

-- 即:
          a                         b                         c
  a       b       c         a       b       c         a       b       c
a b c   a b c   a b c     a b c   a b c   a b c     a b c   a b c   a b c

 

 

3、level使用场景

3.1、构造连续的数字

select level from dual connect by level<=5;

 

 3.2、构造连续的日期

select sysdate+level from dual connect by level<=5;

 

 3.3、字符串拆分

SELECT REGEXP_SUBSTR('a,b,22', '[^,]+', 1, LEVEL)
  FROM DUAL
CONNECT BY REGEXP_SUBSTR('a,b,22', '[^,]+', 1, LEVEL) IS NOT NULL

 

标签:aaa,level,pid,connect,Oracle,id,select
From: https://www.cnblogs.com/karrya/p/17894794.html

相关文章

  • ORACLE EBS R12 - 寄售功能知多少
    ORACLEEBSR12-寄售功能知多少-全威儒-博客园(cnblogs.com) 材料以寄售方式供应,是制造业实现零库存管理的一种方式。东西放在我这里,不用的时候,东西还是供应商的,用的时候,按“装机”数量进行付款。这种业务模式,对于竞争日趋白热化的家电行业,非常重要。库存量为零,库存占......
  • Confluence7.4.6突然爆事务隔离级别问题-解决方案-MySQL session isolation level 'RE
    MySQLsessionisolationlevel'REPEATABLE-READ'isnolongersupported.Sessionisolationlevelmustbe'READ-COMMITTED'.Seehttp://confluence.atlassian.com/x/GAtmDg  成功解决方案:查看http://confluence.atlassian.com/x/GAtmDgFORMYSQL8.X......
  • Oracle多层子查询无法识别外层table
    selectsomething,somthingelse,(select*from(selectQUOTE_PRICEasold_pricefromprice_historywhereprice_history.part_no=article_table.part_noorderbyvalid_fromdesc)whererownum=1)fromarticle_tab......
  • Oracle切换undo后如何确定使用旧undo的会话信息
     Oracle切换undo后如何确定使用旧undo的会话信息 背景是这样的,最近RAC的磁盘组90%报警,存储空间只能再加2T空间。而这套RAC的DATA组用了normal冗余,不知道当初哪个大聪明这么搞的,底层还是做了RAID10的。领导也不知道不懂这么设置的。因此,这新的2T创建新磁盘组且使用extern......
  • oracle Parallel模式-Parallel用法(/*+PARALLEL(n)*/)
    一、用途强行启用并行度来执行当前SQL。这个在Oracle9i之后的版本可以使用,之前的版本现在没有环境进行测试。也就是说,加上这个说明,可以强行启用Oracle的多线程处理功能。举例的话,就像电脑装了多核的CPU,但大多情况下都不会完全多核同时启用(2核以上的比较明显),使用parallel说明,就会......
  • oracle内存调整
    sql查看oralce内存大小SELECTsum(bytes)/1024/1024/1024GBytesFROMdba_segments备份和恢复冷备份--关闭数据库sqlplus/nologconnect/assysdbashutdownimmediate;--查询文件位置--控制文件selectnamefromv$controlfile;'''/home/oracle/app/oracle/ora......
  • ORACLE数据库高水位线
    文档课题:ORACLE数据库高水位线(highwatermark).数据库:oracle11.2.0.41、实验测试1.1、建测试表SQL>createuserleoidentifiedbyleo;Usercreated.SQL>grantdbatoleo;Grantsucceeded.SQL>connleo/leo;Connected.SQL>createtablehswasselect*fr......
  • Oracle查看和终止正在执行的SQL语句
    Oracle查看和终止正在执行的SQL语句--查询当前用户正在执行的SQL语句selecta.sid,a.serial#,a.paddr,a.machine,nvl(a.sql_id,a.prev_sql_id)sql_id,b.sql_text,b.sql_fulltext,b.executions,b.first_load_time,b.last_load_time,b.last_active_time,b.disk_reads,b.direct_wr......
  • oracle日志模式
    oracle日志模式一、oracle日志模式分为(logging,forcelogging,nologging)默认情况是logging,就是会记录到redo日志中,forcelogging是强制记录日志,nologging是尽量减少日志。FORCELOGGING可以在数据库级别、表空间级别进行设定、而LOGGING与NOLOGGING可以在表级别设定。注:FORCELOGGIN......
  • flinkcdc连接oracle的报错汇总
    报错一:原因分析:字面原因,找不到 org.apache.flink.table.api.ValidationException类。解决办法:根据类名可知,应该 org.apache.flink.table.api包下面的,然后去阿里云maven仓库搜索,添加如下依赖即可 报错二:原因分析:ORA-16331:容器"ORCLPDB1"未打开。解决办法:使用命令打......