广告合作
  • 今日头条

    今日头条

  • 百度一下

    百度一下,你就知道

  • 新浪网

    新浪网 - 提供新闻线索,重大新闻爆料

  • 搜狐

    搜狐

  • 豆瓣

    豆瓣

  • 百度贴吧

    百度贴吧——全球领先的中文社区

  • 首页 尚未审核订阅工具 订阅

    Oracle函数之SYS_CONNECT_BY_PATH使用及问题

    来源:网络收集  点击:  时间:2024-04-07
    【导读】:
    最近在做一需求:需要列出所有的部门、部门全称、ID等字段内容。但是之前的同事在做数据库设计时未增加机构全称这一字段,因此需要通过SQL拼接此字段。拼接的过程用到了函数SYS_CONNECT_BY_PATH,也遇到了一些问题,把这个过程分享给大家~工具/原料more电脑oracle、pl/sql客户端SYS_CONNECT_BY_PATH使用1/3分步阅读

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

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

    2/3

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

    SYS_CONNECT_BY_PATH函数官方的解释如下:

    3/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是为了将机构全称中的公共内容去除。

    可能出现的问题1/3

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

    2/3

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

    3/3

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

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

    注意事项

    希望帮助到大家~

    ORACLE函数全称父节点数据库
    本文关键词:

    版权声明:

    1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。

    2、本站仅提供信息发布平台,不承担相关法律责任。

    3、若侵犯您的版权或隐私,请联系本站管理员删除。

    4、文章链接:http://www.1haoku.cn/art_457387.html

    相关资讯

    ©2019-2020 http://www.1haoku.cn/ 国ICP备20009186号05-05 01:35:02  耗时:0.024
    0.024s