/*
执行顺序:

首先,执行按一、二,此时二输出的结果,可以理解为临时n

然后,按三、二、三、二循环执行

注意:
,步骤三的where为递归终止条件,由于用的是substr函数。在最后一次递归的时候,如果不加限制,给的substr的起始位置会大于字符串长度导致报错
,步骤三的from为CTE临时表,在开始递归的时候,需要动态获取循环截断的三个条件。
,关键字 union all 下面为每次递归的语句,递归数据集必为CTE的临时表n
*/

 1 WITH n --下面括号内的为递归用的参数
2 ( str --需要分割的字符串
3 , ori --截断的位置,随每次递归增加
4 , pos --下一次substr截取到的位置,
5 )
6 AS
7 (
8 ---------执行步骤一 ------------------------
9 select dept_lid as str
10 ,1
11 ,locate(',',dept_lid)
12 from pacs.PACSIE_USER_TBL a where user_id='11077'
13 union all
14 ---------执行步骤三 ------------------------
15 select str
16 ,pos + 1
17 ,locate(',',str,pos+1)
18 from n
19 WHERE locate (',', str, pos + 1) > 0
20 )
21 ---------执行步骤二 ------------------------
22 SELECT substr (str, ori, pos - ori) AS RESULT
23 FROM n

-----------------------实质就是将步骤一的结果,循环带入步骤三执行。步骤二只做每次递归后的输出用途。

--执行逻辑如下

引用:https://www.cnblogs.com/heyu/articles/11324767.html

 1     SELECT c.CategoryId,c.Name,c.Parent,tt.level+1 level FROM Category c JOIN
2 (
3 SELECT c.CategoryId,c.Name,c.Parent,tt.level+1 level FROM Category c JOIN
4 (
5 SELECT c.CategoryId,c.Name,c.Parent,tt.level+1 level FROM Category c JOIN
6 (
7 SELECT CategoryId,Name,Parent,0 level FROM dbo.Category WHERE CategoryId=46
8
9 )tt ON tt.Parent=c.CategoryId
10 )tt ON tt.Parent=c.CategoryId
11 )tt ON tt.Parent=c.CategoryId

其他的

递归后的结果,需要再生成一个临时表与其他表进行关联使用。

 1 WITH n  (...)
2 AS
3 (--递归
4 )
5 ,m as (
6 SELECT substr (str, ori, pos - ori) AS RESULT
7 FROM n
8 )
9 select *
10 from m a
11 join b on a.result=b.dept_lid

最新文章

  1. List接口
  2. Handler消息传递机制
  3. 在IIS8添加WCF服务支持
  4. 压力测试工具——Galting
  5. win7 C# winForm编程 savefiledialog 不能弹出保存窗体
  6. geeksforgeeks@ Find sum of different corresponding bits for all pairs (Bit manipulation)
  7. SUSE linux ,liveUSB制作方法
  8. VBS基础篇 - 动态数组
  9. codeforces 687B - Remainders Game 数学相关(互质中国剩余定理)
  10. Spring与Hibernate整合之通用Dao的实现
  11. 什么是RAW数据源
  12. mysq Point类型 查询和插入操作:insert和select
  13. scrollview嵌套gridview滑动问题
  14. brew的MAC安装
  15. TCP/UDP 常用端口列表
  16. html页面边框的另一种写法
  17. ecshop 添加后台页面以及设置权限
  18. 把文本数据转化为json
  19. 谈谈 在 .Net 生态里为什么没有 Hadoop 系列 ?
  20. 阅读<Vivado Design Suite Tutorial---Logic Simulation>笔记

热门文章

  1. 12月16日内容总结——图书管理系统、聚合与分组查询、F与Q查询
  2. Grafana 系列文章(十四):Helm 安装Loki
  3. CentOS7 RPM方式安装JDK
  4. 周末折腾了两天,踩了无数个坑,终于把win7装成了centos7
  5. soucrce insight4 使用
  6. 【NOIP2013提高组】华容道
  7. 钓鱼攻击之:CHM电子书钓鱼
  8. Gateway集成Netty服务
  9. 中后端做Excel导出功能返回数据流前端如何做处理
  10. LeetCode-537 复数乘法