全部產品
Search
文件中心

PolarDB:使用SYS_CONNECT_BY_PATH檢索路徑

更新時間:Jul 06, 2024

SYS_CONNECT_BY_PATH是一個函數,它在分層查詢中用於檢索在當前節點和根節點之間出現的指定列的值。

函數的特徵為:

SYS_CONNECT_BY_PATH (column, delimiter)

該函數採用兩個參數:

  • column 是位於分層查詢中指定的表中且調用該函數的列的名稱。
  • delimiter 是 varchar 值,用於分隔指定列中的每個條目。

以下樣本返回員工名稱及其經理的列表;如果經理有上級經理,則該名稱會附加到結果中:

polardb=# SELECT level, ename , SYS_CONNECT_BY_PATH(ename, '/') managers
      FROM emp
      CONNECT BY PRIOR empno = mgr
      START WITH mgr IS NULL
      ORDER BY level, ename, managers;
 level | ename  |        managers
-------+--------+-------------------------
     1 | KING   | /KING
     2 | BLAKE  | /KING/BLAKE
     2 | CLARK  | /KING/CLARK
     2 | JONES  | /KING/JONES
     3 | ALLEN  | /KING/BLAKE/ALLEN
     3 | FORD   | /KING/JONES/FORD
     3 | JAMES  | /KING/BLAKE/JAMES
     3 | MARTIN | /KING/BLAKE/MARTIN
     3 | MILLER | /KING/CLARK/MILLER
     3 | SCOTT  | /KING/JONES/SCOTT
     3 | TURNER | /KING/BLAKE/TURNER
     3 | WARD   | /KING/BLAKE/WARD
     4 | ADAMS  | /KING/JONES/SCOTT/ADAMS
     4 | SMITH  | /KING/JONES/FORD/SMITH
(14 rows)

在結果集中:

  • level 列顯示該查詢返回的層級數。
  • ename 列顯示員工名稱。
  • managers 列包含經理的層次列表。

PolarDB PostgreSQL版(相容Oracle)的 SYS_CONNECT_BY_PATH 實現不支援:

  • 在 CONNECT_BY_PATH 內部使用 SYS_CONNECT_BY_PATH。
  • 在 SYS_CONNECT_BY_PATH 內部使用 SYS_CONNECT_BY_PATH。