以sqlserver处理父子级关系查询为列介绍with as、cast()、for xml path()、stuff()的使用
来源:互联网 发布:湖北广电网络客服电话 编辑:程序博客网 时间:2024/06/09 17:09
最近项目中遇到了关于处理单表中父子级关系的的问题,以其中一个需求为列:先看一下主表结构:idpid61069617269现在的需求是给一个61可以查到61及61以下的所有子孙节点并返回为逗号隔开的字符串:如61,69,72博主的做法如下:
WITH tmp AS (SELECT*FROM主表WHEREparentid =61UNION ALLSELECT主表.*FROMtmpJOIN 主表 ON tmp.id =主表.parentid)SELECT '61,'+STUFF((SELECT ','+CAST(id AS VARCHAR(10)) FROM tmp for xml path('')),1,1,'')
(注:“主表”是博主项目中的表)
介绍:with as 用于声明临时表,可以理解为java中的全局变量,在复杂的查询中非常有用;
cast(字段名 as 类型名) 函数可以对字段进行强制类型转换;
for xml path()本来用于将查询结果以xml格式展示,但更常用于字符串的拼接,例如:
SELECT ','+CAST(id AS VARCHAR(10)) FROM tmp for xml path(''),61,69,72
stuff函数主要用来删除字符串中某一部分:
STUFF ( character_1 , start , length ,character_2 )作用:将character_1中自start(SQL中都是从1开始,而非0)起,删除length个长度的字符,然后用character_2替换删掉的字符。本列中用于删除第一个多余的逗号。
希望对你有帮助谢谢!
阅读全文
0 0
- 以sqlserver处理父子级关系查询为列介绍with as、cast()、for xml path()、stuff()的使用
- SqlServer stuff + for xml path 用法(以权限角色管理为例讲解)
- sqlserver 用 STUFF 和 for xml path 把查询结果连接成字符串
- sql的for xml path 和 stuff 结合使用
- 【sqlserver】字符串拼接实现(for xml path ,stuff)
- sqlserver中FOR XML PATH 的使用
- stuff 与 for xml path('')
- SqlServer实现oracle10g的 wmsys.wm_concat()/使用自连接、for xml path('')和stuff合并显示多行数据到一行中
- 合并多行查询数据到一行:使用自连接、FOR XML PATH('')、STUFF或REPLACE函数
- 合并多行查询数据到一行:使用自连接、FOR XML PATH('')、STUFF或REPLACE函数
- 合并多行查询数据到一行:使用自连接、FOR XML PATH('')、STUFF或REPLACE函数
- 合并多行查询数据到一行:使用自连接、FOR XML PATH('')、STUFF或REPLACE函数
- sqlserver中 多条数据合并成一条数据 (stuff 与 for xml path 连用)
- SQL之 Stuff和For xml path
- Sql Server STUFF与FOR XML PATH
- SQLServer FOR XML PATH使用案例
- sqlserver for xml path
- SQLSERVER FOR XML PATH
- nginx服务器高并发优化思路
- Spark体系概况
- springboot报错(三) webjars被拦截或找不到
- shell脚本基础
- 100. Same Tree (DFS)
- 以sqlserver处理父子级关系查询为列介绍with as、cast()、for xml path()、stuff()的使用
- CentOs7 自动获取IP地址图文详解
- 《Python核心编程习题》---chapte11
- 悬浮框计算器
- 日常小结篇-static/final
- JS实现的base64加密、md5加密及sha1加密详解
- 严重: Exception sending context initialized event to listener instance of class [org.springframework.w
- QT no such slot...
- Ubuntu 下查询软件包的依赖关系