Welcome 微信登录

首页 / 数据库 / MySQL / Oracle中SYS_CONNECT_BY_PATH函数的妙用

Oracle中SYS_CONNECT_BY_PATH函数是非常重要的函数,下面就为您介绍一个使用SYS_CONNECT_BY_PATH函数的例子,实例如下:
  1. create table test (a varchar2(10),b varchar2(10));  
  2.  
  3. INSERT INTO TEST (A, B) VALUES ("1", "我");  
  4. INSERT INTO TEST (A, B) VALUES ("1", "们");  
  5. INSERT INTO TEST (A, B) VALUES ("2", "一");  
  6. INSERT INTO TEST (A, B) VALUES ("2", "起");  
  7. COMMIT;  
  8.  
  9. SELECT A, B FROM TEST  
  10.  
  11. A          B  
  12. ---------- ----------  
  13. 1          我  
  14. 1          们  
  15. 2          一  
  16. 2          起  
  17.  
  18. 现在需要达到如下的效果,  
  19. A          B  
  20. ---------- ----------  
  21. 1          我,们  
  22. 2          一,起  
  23.  
只想用一句sql来返回结果。
  1. SELECT A, LTRIM(MAX(SYS_CONNECT_BY_PATH(B, ",")), ",") B  
  2. FROM (SELECT B, A, ROW_NUMBER() OVER(PARTITION BY A ORDER BY B DESC) RN  
  3.           FROM TEST)  
  4. START WITH RN = 1 
  5. CONNECT BY RN - 1 = PRIOR RN  
  6.        AND A = PRIOR A  
  7. GROUP BY A; 
其中,SYS_CONNECT_BY_PATH函数主要作用是可以把一个父节点下的所有子节点通过某个字符进行区分,然后连接在一个列中显示。row_number函数的用途是非常广泛,这个函数的功能是为查询出来的每一行记录生成一个序号。生产序号的方法通过over()函数里面的语句来控制。CentOS5下MySQL源码安装方式Oracle wm_concat(column)函数的使用相关资讯      Oracle教程 
  • Oracle中纯数字的varchar2类型和  (07/29/2015 07:20:43)
  • Oracle教程:Oracle中查看DBLink密  (07/29/2015 07:16:55)
  • [Oracle] SQL*Loader 详细使用教程  (08/11/2013 21:30:36)
  • Oracle教程:Oracle中kill死锁进程  (07/29/2015 07:18:28)
  • Oracle教程:ORA-25153 临时表空间  (07/29/2015 07:13:37)
  • Oracle教程之管理安全和资源  (04/08/2013 11:39:32)
本文评论 查看全部评论 (1)
表情: 姓名: 字数


评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管