Oracle函数之SYS_CONNECT_BY_PATH使用及问题

 时间:2026-02-13 21:35:40

1、      1、首先我们先看下表结构以及需要达到的目标:

           表结构如下图,可以看到未包含机构全称字段;需求为查询所有组织机构的机构全称。

Oracle函数之SYS_CONNECT_BY_PATH使用及问题

2、        2、因为组织机构的层级数不一定,所以不能简单的使用ID、上级机构ID做单表连接查询,因此我们需要使用SYS_CONNECT_BY_PATH函数。

        SYS_CONNECT_BY_PATH函数官方的解释如下:

Oracle函数之SYS_CONNECT_BY_PATH使用及问题

3、      3、根据需求、函数说明拼写后的SQL:

select ORG_NAME,

       substr(SYS_CONNECT_BY_PATH(ORG_NAME, '/'), 9)

  from t_ituser_org t

 where t.org_type = '0'

 START WITH PARENT_ORG_ID IS NULL

CONNECT BY PRIOR ORG_ID = PARENT_ORG_ID

      大家在SQL可以单独使用SYS_CONNECT_BY_PATH(ORG_NAME, '/')方法即可。增加substr是为了将机构全称中的公共内容去除。

Oracle函数之SYS_CONNECT_BY_PATH使用及问题

1、      1、在某次执行此SQL时,报了一个SQL错误,报错内容如下:

Oracle函数之SYS_CONNECT_BY_PATH使用及问题

2、      2、根据错误提示,猜想为:某条记录的该字段内容包含有我们的分割符“/”,经过查询我们确实有几条数据的部门名称包含/字符。

Oracle函数之SYS_CONNECT_BY_PATH使用及问题

3、      3、修改方案:改用其他的分割符号,例如“||”等;

       为了方便查询,我们可使用此函数创建一个视图方便以后查询。

Oracle函数之SYS_CONNECT_BY_PATH使用及问题

  • 信贷公司如何做好客户经理
  • Excel关闭软件技巧汇总:快捷键+鼠标单击
  • 金十数据如何启用每日早报
  • 浪花直播软件怎么申请注销
  • 宜搜小说如何开启VIP会员?
  • 热门搜索
    新婚祝福词语 爆菊花是什么意思 升华的意思 佳能6d配什么镜头 生平是什么意思 大盘缩量下跌意味什么 似水流年是什么意思 挚友什么意思 长脸型适合什么刘海 什么电影最搞笑