递归函数数据库oracle,[数据库]Oracle 递归函数与拼接

递归函数数据库oracle,[数据库]Oracle 递归函数与拼接数据库 Oracle 递归函数与拼接 02015 07 2417 00 091SELECTSUB SYS CONNECT BY PATH tb name gt 3 name2FROMtab tb parentid 0 04CONNECTBYP mt parentid

[数据库]Oracle 递归函数与拼接

0 2015-07-24 17:00:09

1 SELECT SUBSTR(SYS_CONNECT_BY_PATH(tb.name,’->’),3) name2 FROM table tb3 START WITH nvl(tb.parentid,0)=04 CONNECT BY PRIOR ID=mt.parentid 5 ;

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

如果一定要用,可以使用replace替换一下,方法如下 REPLACE(字段名,原字符,’,’)。

还有,SYS_CONNECT_BY_PATH这个函数是oracle9i才新提出来的!它要和connect by子句合用。

例子:

1、创建表1 CREATE TABLE SC_DISTRICT 2 ( 3 ID NUMBER(10) NOT NULL, 4 PARENT_ID NUMBER(10), 5 NAME VARCHAR2(255 BYTE) NOT NULL 6 );

2、添加数据1 INSERT INTO SC_DISTRICT(ID,NAME) VALUES(1,’四川省’); 2 3 INSERT INTO SC_DISTRICT(ID,PARENT_ID,NAME) VALUES(2,1,’巴中市’); 4 INSERT INTO SC_DISTRICT(ID,PARENT_ID,NAME) VALUES(3,1,’达州市’); 5 6 INSERT INTO SC_DISTRICT(ID,PARENT_ID,NAME) VALUES(4,2,’巴州区’); 7 INSERT INTO SC_DISTRICT(ID,PARENT_ID,NAME) VALUES(5,2,’通江县’); 8 INSERT INTO SC_DISTRICT(ID,PARENT_ID,NAME) VALUES(6,2,’平昌县’); 9 10 INSERT INTO SC_DISTRICT(ID,PARENT_ID,NAME) VALUES(7,3,’通川区’);11 INSERT INTO SC_DISTRICT(ID,PARENT_ID,NAME) VALUES(8,3,’宣汉县’);12 13 INSERT INTO SC_DISTRICT(ID,PARENT_ID,NAME) VALUES(9,8,’塔河乡’);14 INSERT INTO SC_DISTRICT(ID,PARENT_ID,NAME) VALUES(10,8,’三河乡’);15 INSERT INTO SC_DISTRICT(ID,PARENT_ID,NAME) VALUES(11,8,’胡家镇’);16 INSERT INTO SC_DISTRICT(ID,PARENT_ID,NAME) VALUES(12,8,’南坝镇’);17 18 INSERT INTO SC_DISTRICT(ID,PARENT_ID,NAME) VALUES(13,6,’大寨乡’);19 INSERT INTO SC_DISTRICT(ID,PARENT_ID,NAME) VALUES(14,6,’响滩镇’);20 INSERT INTO SC_DISTRICT(ID,PARENT_ID,NAME) VALUES(15,6,’龙岗镇’);21 INSERT INTO SC_DISTRICT(ID,PARENT_ID,NAME) VALUES(16,6,’白衣镇’);

生成表与数据如下:

bc91bb04e6e9c61e24c974e4440db8f2.gif1 查询巴中市下行政组织递归路径 2 SELECT ID, NAME, PARENT_ID, 3 SUBSTR(SYS_CONNECT_BY_PATH(NAME,’->’),3) NAME_PATH 4 FROM SC_DISTRICT 5 START WITH NAME=’巴中市’ 6 CONNECT BY PRIOR ID=PARENT_ID 7 8 查询结果: 9 ID NAME PARENT_ID NAME_PATH10 2 巴中市 1 巴中市11 4 巴州区 2 巴中市->巴州区12 5 通江县 2 巴中市->通江县13 6 平昌县 2 巴中市->平昌县14 13 大寨乡 6 巴中市->平昌县->大寨乡15 14 响滩镇 6 巴中市->平昌县->响滩镇16 15 龙岗镇 6 巴中市->平昌县->龙岗镇17 16 白衣镇 6 巴中市->平昌县->白衣镇

原文链接:http://www.cnblogs.com/wanghonghu/archive/2012/08/31/2665945.html

转载请保留本文网址:http://www.shaoqun.com/a/127477.html

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:。

oracle

0

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/216383.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午11:58
下一篇 2026年3月18日 上午11:59


相关推荐

  • Http报头Accept与Content-Type的区别

    Http报头Accept与Content-Type的区别RequestMapping有多个属性来进一步匹配HTTP请求到Controller方法,分别是value,请求的URL的路径,支持也模板、正则表达式method,HTTP请求方法,有GETPOSTPUTconsumes,允许的媒体类型(MediaTypes),如onsumesapplication/ison”,对应于请求的HTTPConten…

    2022年8月24日
    8
  • 中介效应分析与路径分析的区别_完全中介效应

    中介效应分析与路径分析的区别_完全中介效应这篇文章主要是介绍中介效应分析及路径分析的概念,以及操作步骤,注意事项。好多内容就是拷贝的邱皓政老师的《量化研究与统计分析:SPSS(PASW)数据分析范例解析》第12章节,然后在中间加入了少部分自己看的过程的一些理解吧。1.中介效应分析从上述的阐述可以知道,中介效应分析其实就是有一个变量充当了中介变量,X->Y是通过中介变量Z来传递影响的。如果是完全中介效应就是完全由Z来传递影…

    2022年8月24日
    8
  • redis集群搭建(非常详细,适合新手)_redis集群模式

    redis集群搭建(非常详细,适合新手)_redis集群模式一、基本环境首先我们需要使用VMware配置几个虚拟机,我们需要安装VMWare然后下载自己的linux镜像文件,在虚拟机上安装linux系统,vm15和centos7下载传送门提取码:lvb5。我使用的是centos764,大致步骤可以根据其他博客将第一台虚机的系统安装成功,然后直接clone这台机器就可以了,然后需要修改ip。二、准备相关软件安装包…

    2022年10月15日
    5
  • 百度文库免费下载文档方法[通俗易懂]

    百度文库免费下载文档方法

    2022年2月11日
    87
  • jpg和jpeg的区别是什么_jpeg和jpg的区别是什么

    jpg和jpeg的区别是什么_jpeg和jpg的区别是什么jpg与jpeg的区别在哪

    2022年8月1日
    8
  • linux执行lsof命令_Linux lsof 命令

    linux执行lsof命令_Linux lsof 命令Linuxlsof 命令发布时间 2019 01 1608 52 浏览次数 841 标签 Linuxlsoflso listopenfile 是一个查看进程打开的文件的工具 在 linux 系统中 一切皆文件 通过文件不仅仅可以访问常规数据 还可以访问网络连接和硬件 所以 lsof 命令不仅可以查看进程打开的文件 目录 还可以查看进程监听的端口等 socket 相关的信息 本文将介绍

    2025年10月8日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号