You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Oracle SQL中将层级路径拆分为父子列?

Oracle SQL 拆分层级路径为父子结构

针对给定的层级路径字符串 pcmdocs/Marquette/10600551 - Track Replacement/CDA-Contract Documentation-Administration/folder1,可以通过以下SQL语句将其拆分为包含当前节点和父节点的层级结构:

WITH path_data AS (
    -- 存储原始层级路径
    SELECT 'pcmdocs/Marquette/10600551 - Track Replacement/CDA-Contract Documentation-Administration/folder1' AS full_path FROM dual
),
nodes AS (
    -- 拆分路径节点并关联父节点
    SELECT 
        LEVEL AS node_level,
        REGEXP_SUBSTR(full_path, '[^/]+', 1, LEVEL) AS node_name,
        LAG(REGEXP_SUBSTR(full_path, '[^/]+', 1, LEVEL)) OVER (ORDER BY LEVEL) AS parent_node
    FROM path_data
    CONNECT BY REGEXP_SUBSTR(full_path, '[^/]+', 1, LEVEL) IS NOT NULL
)
-- 输出最终的父子结构,根节点父节点设为NULL
SELECT 
    node_name AS "当前节点",
    CASE WHEN node_level = 1 THEN NULL ELSE parent_node END AS "父节点"
FROM nodes;

逻辑说明

  1. path_data:用CTE存储原始路径,方便后续复用;
  2. nodes:通过CONNECT BY循环调用REGEXP_SUBSTR拆分路径中的每个节点,同时用LAG函数获取当前节点的上一级节点作为父节点;
  3. 最终查询处理根节点的父节点为NULL,符合层级结构的常规展示。

执行结果

当前节点父节点
pcmdocsNULL
Marquettepcmdocs
10600551 - Track ReplacementMarquette
CDA-Contract Documentation-Administration10600551 - Track Replacement
folder1CDA-Contract Documentation-Administration

内容的提问来源于stack exchange,提问作者Kritika Gupta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 00:55:18