sql – 在Oracle中将此路径z / y / x反转为x / y / z
发布时间:2020-12-12 16:24:29 所属栏目:MsSql教程 来源:网络整理
导读:如何在SELECT查询中反转此路径: z/y/x 对于 x/y/z where /是分隔符 并且在一行中可以有许多分隔符 ex: select (... z/y/x/w/v/u ...) reversed_path from ... 解决方法 最简单的方法可能是编写一个存储的pl / sql函数,但是它可以单独用SQL(Oracle)完成. 这将
如何在SELECT查询中反转此路径:
z/y/x 对于 x/y/z where /是分隔符 ex: select (... z/y/x/w/v/u ...) reversed_path from ... 解决方法最简单的方法可能是编写一个存储的pl / sql函数,但是它可以单独用SQL(Oracle)完成.这将分解子路径中的路径: SQL> variable path varchar2(4000); SQL> exec :path := 'a/b/c/def'; PL/SQL procedure successfully completed SQL> SELECT regexp_substr(:path,'[^/]+',1,ROWNUM) sub_path,ROWNUM rk 2 FROM dual 3 CONNECT BY LEVEL <= length(regexp_replace(:path,'[^/]','')) + 1; SUB_P RK ----- -- a 1 b 2 c 3 def 4 然后我们使用sys_connect_by_path重构反向路径: SQL> SELECT MAX(sys_connect_by_path(sub_path,'/')) reversed_path 2 FROM (SELECT regexp_substr(:path,3 ROWNUM rk 4 FROM dual 5 CONNECT BY LEVEL <= length(regexp_replace(:path,'')) + 1) 6 CONNECT BY PRIOR rk = rk + 1 7 START WITH rk = length(regexp_replace(:path,'')) + 1; REVERSED_PATH ------------- /def/c/b/a (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- 如何往MSSQLServer中插入一条记录
- 数据库 – Hibernate saveOrUpdate vs update vs
- sql – 如何在不指定列名的情况下从另一个表更新
- sql-server – 缓冲区和缓存差异?
- SQLServer 自动截断字符串
- sql-server – 如何在SQl Server 2008中选择dist
- SQL Server 将mater库中的系统存储过程批量生成*
- sql-server – 重建索引对SQL Server有多长时间?
- 64位 win10系统安装绿色版mysql-5.7.16-winx64的
- sqlserver2005实现oracle中的rownum(记录号)功能
热点阅读