SYS_CONNECT_BY_PATH
适用于 ✅ 开源版 ✅ 专业版 ✅ 企业版
SYS_CONNECT_BY_PATH
函数允许递归地为层次结构中通往当前行的路径中的每个元素生成字符串。
SELECT child, parent, sys_connect_by_path(child, '/') FROM ( VALUES (1, null), (2, 1), (3, 2) ) AS t (child, parent) START WITH parent IS NULL CONNECT BY NOCYCLE PRIOR child = parent;
Field<Integer> child = field("child", INTEGER); Field<Integer> parent = field("parent", INTEGER); ctx.select( child, parent, sysConnectByPath(child, "/")) .from(values( row(val(1), val(null, INTEGER)), row(2, 1), row(3, 2)).as(table("t"), child, parent)) .startWith(parent.isNull()) .connectByNoCycle(prior(child).eq(parent)) .fetch();
例如,结果是
+-------+--------+---------------------+ | child | parent | sys_connect_by_path | +-------+--------+---------------------+ | 1 | {null} | /1 | | 2 | 1 | /1/2 | | 3 | 2 | /1/2/3 | +-------+--------+---------------------+
方言支持
此示例使用 jOOQ
sysConnectByPath(AUTHOR.ID, "/")
翻译成以下特定方言的表达式
Exasol, Informix, Oracle, Snowflake
sys_connect_by_path(AUTHOR.ID, '/')
ASE, Access, Aurora MySQL, Aurora Postgres, BigQuery, ClickHouse, CockroachDB, DB2, Databricks, Derby, DuckDB, Firebird, H2, HSQLDB, Hana, MariaDB, MemSQL, MySQL, Postgres, Redshift, SQLDataWarehouse, SQLServer, SQLite, Sybase, Teradata, Trino, Vertica, YugabyteDB
/* UNSUPPORTED */
使用 jOOQ 3.21 生成。早期 jOOQ 版本的支持可能有所不同。 在我们的网站上翻译您自己的 SQL
反馈
您对此页面有任何反馈吗? 我们很乐意听取您的意见!