zoukankan      html  css  js  c++  java
  • Oracle函数sys_connect_by_path转postgresql

    语法:
    Oracle函数:sys_connect_by_path 主要用于树查询(层次查询) 以及 多列转行。其语法一般为:
           select ... sys_connect_by_path(column_name,'connect_symbol')  from table 
           start with ... connect by ... prior
    理解:
    对于数据库来说,根节点并不一定是在数据库中设计的顶级节点,而是start with开始的地方。sys_connect_by_path函数就是从start with开始的地方开始遍历,并记下其遍历到的节点,start with开始的地方被视为根节点,将遍历到的路径根据函数中的分隔符,组成一个新的字符串。sys_connect_by_path函数用connect by来寻找下一条记录,直到迭代找不到相应记录为止。概念与递归类似,connect by指定递归(连接)条件,如果条件不满足则递归结束。

    SELECT
            ar.REF_ID,
            ar.ID,
            SUBSTR(SYS_CONNECT_BY_PATH(ar.NAME, '/'), 2) path 
            --SYS_CONNECT_BY_PATH ( ar.NAME, '/' ) path 
        FROM
            EMS_AREA ar START WITH ar.ID = '<ROOT>' CONNECT BY PRIOR ID = ar.PARENT_ID 

    with RECURSIVE cte as
    (
    select A.REF_ID,A.ID,cast(A.name as varchar(100)) as path from EMS_AREA A where a.id='<ROOT>'
    union all 
    select k.REF_ID,k.id,cast(c.path||'/'||k.name as varchar(100)) as path  from EMS_AREA k inner join cte c on c.id = k.PARENT_ID
    )select REF_ID,id,path from cte order by id;

    参考 https://www.cnblogs.com/supermandy/p/7873233.html

  • 相关阅读:
    Swagger2文档生成器
    SSM中spring配置文件
    REDTful风格设计接口
    xss练习
    使用burp绕过token爆破用户名密码
    简单的内网渗透实验
    XSS Challenges
    一次简单的渗透
    vim进阶学习
    kali的部分学习
  • 原文地址:https://www.cnblogs.com/acme6/p/12484711.html
Copyright © 2011-2022 走看看