树 start with connect by 使用示例及说明

来源:互联网 发布:bugfree检测不到mysql 编辑:程序博客网 时间:2024/06/05 11:35
select LEVEL, RPAD(' ', 2*(LEVEL-1), '-') ||employee_id, 
       first_name, last_name, manager_id, 
       CONNECT_BY_ROOT first_name "ROOT",   
       CONNECT_BY_ISLEAF "ISLEAF",
       SYS_CONNECT_BY_PATH(first_name, '/') "PATH" 
From EMPLOYEES
START WITH employee_ID IS not NULL 
connect by  prior employee_id = manager_id;


说明: 
1. START WITH:告诉系统以哪个节点作为根结点开始查找并构造结果集,该节点即为返回记录中的最高节点。 
2. 当分层查询中存在上下层互为父子节点的情况时,会返回ORA-01436错误。此时,需要在connect by后面加上NOCYCLE关键字。同时,可用connect_by_iscycle伪列定位出存在互为父子循环的具体节点。 connect_by_iscycle必须要跟关键字NOCYCLE结合起来使用。
3. CONNECT_BY_ROOT 返回当前节点的最顶端节点 
4. CONNECT_BY_ISLEAF 判断是否为叶子节点,如果这个节点下面有子节点,则不为叶子节点 
5. LEVEL 伪列表示节点深度 
6. SYS_CONNECT_BY_PATH函数显示详细路径,并用“/”分隔


通过CONNECT BY生成序列

SELECT ROWNUM FROM DUAL CONNECT BY ROWNUM <= 10;  

通过CONNECT BY用于十六进度转换为十进制


CREATE OR REPLACE FUNCTION f_hex_to_dec
(p_str IN VARCHAR2) 
RETURN VARCHAR2 IS 
----------------------------------------------------------------------------------------------------------------------  
-- 对象名称: f_hex_to_dec  
-- 对象描述: 十六进制转换十进制  
-- 输入参数: p_str 十六进制字符串  
-- 返回结果: 十进制字符串  
-- 测试用例: SELECT f_hex_to_dec('78A') FROM dual;  
----------------------------------------------------------------------------------------------------------------------  
v_return  VARCHAR2(4000);  


   BEGIN 
SELECT SUM(DATA) INTO v_return  
  FROM (SELECT (CASE upper(substr(p_str, rownum, 1))  
                 WHEN 'A' THEN '10' 
                 WHEN 'B' THEN '11' 
                 WHEN 'C' THEN '12' 
                 WHEN 'D' THEN '13' 
                 WHEN 'E' THEN '14' 
                 WHEN 'F' THEN '15' 
                 ELSE substr(p_str, rownum, 1)  
               END) * power(16, length(p_str) - rownum) DATA  
          FROM dual  
        CONNECT BY rownum <= length(p_str));  
RETURN v_return;  


   EXCEPTION  
WHEN OTHERS THEN 
  RETURN NULL;  


   END; 
说明:
1. CONNECT BY rownum <= length(p_str))对输入的字符串进行逐个遍历
2. 通过CASE语句,来解析十六进制中的A-F对应的10进制值

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 英雄联盟欧服连接不上服务器怎么办 试客联盟认证手机号成空号了怎么办 汽车脚垫不贴合翘起来了怎么办 版权保护迅雷下载不了的资源怎么办 30岁在外地城市找不到工作怎么办 新买的苹果爱拍充不进去电是怎么办 绝地求生东南亚服匹配不到人怎么办 电脑卡住了怎么办鼠标也点不动 幽灵行动荒野没有主线任务了怎么办 拼多多购买的东西下架了怎么办 电脑版的荒野行动玩的时候卡怎么办 欧洲卡车模拟2气压过低怎么办 word页眉和正文有段距离怎么办 酷派大神x7卡在开机界面怎么办 妹妹结婚跟领导请假不批怎么办 网页分享后不想显示连接网址怎么办 魔兽世界肉弹随从的任务断了怎么办 在美发店上班被小混混打了怎么办 孩子上四年级了不知道写作业怎么办 运动完第二天恶心想吐怎么办 吃减肥药皮肤变差了怎么办 生了孩子子宫没恢复好怎么办 cf我是新手不知道怎么报点怎么办 挑战人物已经有了又刷到怎么办 小米手机账户验证码隐藏了怎么办? 苹果手机绑定的邮箱密码忘了怎么办 魔域手机版不要的装备怎么办 魔域永恒多了的幻兽装备怎么办 魔域怀旧版70星以后宝宝怎么办 天猫确认收货后不寄发票怎么办 足球运动员踢了一半想撒尿了怎么办 17个月宝宝0型腿怎么办 走的路多了腿疼怎么办 如果新兵老被老兵打怎么办求求个位 做古董拍卖诈骗被警察抓了怎么办 武汉个人社保怎么办停转到海南来 狗狗车祸前脚软组织受伤了怎么办 6岁儿童夜里盗汗惊战发抖怎么办 一个月大的小狗尾巴掉毛怎么办 口袋妖怪用修改器被ban了怎么办 联币金融提现不到账怎么办