在论坛中出现的比较难的sql问题:12(递归问题2 拆分字符串)
2013-11-21 20:12
267 查看
最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了。
所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路。
请教一个MSSQLSELECT语名的写法
http://bbs.csdn.net/topics/390649166?page=1#post-396149924
表结构
id ids
1 3,8,83,92,215,7
传入一个值8,92要取出3,83,215,7
即是取出不存在于传入ID串其它所有ID都取出来.
请问这个SELECT 语语应该怎么写。
递归replace,我的解法:
所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路。
请教一个MSSQLSELECT语名的写法
http://bbs.csdn.net/topics/390649166?page=1#post-396149924
表结构
id ids
1 3,8,83,92,215,7
传入一个值8,92要取出3,83,215,7
即是取出不存在于传入ID串其它所有ID都取出来.
请问这个SELECT 语语应该怎么写。
递归replace,我的解法:
drop table t go create table t(id int, ids varchar(100)) insert into t select 1 , '3,8,83,92,215,7' go declare @a varchar(100) = '8,7' ;with tt as ( select id, ids,@a+',' as a,ids+',' as ids_t from t where ids like ('%' + REPLACE(@a,',', '%') + '%') ), ttt as ( select id,ids, cast(a as varchar(max)) as a, cast(ids_t as varchar(max)) as ids_t , 1 as level from tt union all select id,ids, cast(stuff(a,1,charindex(',',a),'') as varchar(max)) , cast(replace(ids_t,left(a,charindex(',',a)),'') as varchar(max)), level + 1 from ttt where charindex(',',a) > 0 ) select id, ids_t from ( select id, ids,left(ids_t,len(ids_t)-1) as ids_t, ROW_NUMBER() over(partition by id order by level desc) as rownum from ttt )a where rownum = 1 /* id ids_t 1 3,83,92,215 */
相关文章推荐
- 在论坛中出现的比较难的sql问题:27(字符串拆分、字符串合并、非连续数字的间隔范围、随机返回字符串)
- 在论坛中出现的比较难的sql问题:25(字符串拆分3)
- 在论坛中出现的比较难的sql问题:12(递归问题2)
- 在论坛中出现的比较难的sql问题:38(字符拆分 字符串检索问题)
- 在论坛中出现的比较难的sql问题:25(字符串拆分3)
- 在论坛中出现的比较难的sql问题:8(递归问题1)
- 在论坛中出现的比较难的sql问题:8(递归问题 树形结构分组)
- 在论坛中出现的比较难的sql问题:26(动态行专列+合并字符串、补足行数)
- 在论坛中出现的比较难的sql问题:33(递归 连续日期问题 )
- 在论坛中出现的比较难的sql问题:34(递归 获取连续值问题)
- 在论坛中出现的比较难的sql问题:28(循环查询表来实现递归)
- 在论坛中出现的比较难的sql问题:21(递归问题3)
- 在论坛中出现的比较难的sql问题:1(字符串分拆+行转列问题)
- 在论坛中出现的比较难的sql问题:21(递归问题 检索某个节点下所有叶子节点)
- 在论坛中出现的比较难的sql问题:1(字符串分拆+行转列问题 SQL遍历截取字符串)
- 在论坛中出现的比较难的sql问题:36(动态行转列 解析json格式字符串)
- 在论坛中出现的比较难的sql问题:14(存储过程问题)
- 在论坛中出现的比较难的sql问题:44(触发器专题 明细表插入数据时调用主表对应的数据)
- 在论坛中出现的比较难的sql问题:14(存储过程问题 存储过程参数、存储过程内的参数)
- 在论坛中出现的比较难的sql问题:15(行转列2)