树 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进制值
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进制值
- 树 start with connect by 使用示例及说明
- start with connect by
- start with connect by
- start with connect by
- connect by/start with
- start with connect by
- connect by...start with...的使用
- connect by prior... start with的使用
- oracle connect by level start with使用
- start with connect by prior的简单小示例
- connect by prior start with
- connect by prior start with
- connect by…start with...
- START WITH...CONNECT BY 学习!
- CONNECT BY PRIOR... START WITH
- connect by prior start with
- Start With......Connect by prior..
- Oracle Connect By Start With
- android应用的适配常用方法
- poj 3259 Wormholes
- poj 2954 Triangle(Pick公式+GCD关系+面积公式)
- volatile 简介
- 我们都一样
- 树 start with connect by 使用示例及说明
- 根据给定的IEditPar或IEditorInput获取IFile实例。
- android中实现内存中数据保存到sdcard
- 多进程方式
- ios 编程日记 1 :内存问题
- Fedora14配置NFS服务
- 写MBA毕业论文有感-重口味,不喜莫入
- 2.关于结构体以及结构体数组作为函数入口参数的方法(学习笔记)
- Sql Server2005 测试效率