在论坛中出现的比较难的sql问题:12(递归问题2 拆分字符串)
原文:在论坛中出现的比较难的sql问题:12(递归问题2 拆分字符串)
所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路。
请教一个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问题:12(递归问题2 拆分字符串)的更多相关文章
- 在论坛中出现的比较难的sql问题:46(日期条件出现的奇怪问题)
原文:在论坛中出现的比较难的sql问题:46(日期条件出现的奇怪问题) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. 所以,觉得有 ...
- 在论坛中出现的比较难的sql问题:45(用户在线登陆时间的小时、分钟计算问题)
原文:在论坛中出现的比较难的sql问题:45(用户在线登陆时间的小时.分钟计算问题) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. ...
- 在论坛中出现的比较难的sql问题:44(触发器专题 明细表插入数据时调用主表对应的数据)
原文:在论坛中出现的比较难的sql问题:44(触发器专题 明细表插入数据时调用主表对应的数据) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决 ...
- 在论坛中出现的比较难的sql问题:42(动态行转列 考勤时间动态列)
原文:在论坛中出现的比较难的sql问题:42(动态行转列 考勤时间动态列) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路.
- 在论坛中出现的比较难的sql问题:41(循环替换 循环替换关键字)
原文:在论坛中出现的比较难的sql问题:41(循环替换 循环替换关键字) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路.
- 在论坛中出现的比较难的sql问题:40(子查询 销售和历史库存)
原文:在论坛中出现的比较难的sql问题:40(子查询 销售和历史库存) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. 所以,觉得有 ...
- 在论坛中出现的比较难的sql问题:39(动态行转列 动态日期列问题)
原文:在论坛中出现的比较难的sql问题:39(动态行转列 动态日期列问题) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. 所以,觉 ...
- 在论坛中出现的比较难的sql问题:38(字符拆分 字符串检索问题)
原文:在论坛中出现的比较难的sql问题:38(字符拆分 字符串检索问题) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. 所以,觉得 ...
- 在论坛中出现的比较难的sql问题:37(动态行转列 某一行数据转为列名)
原文:在论坛中出现的比较难的sql问题:37(动态行转列 某一行数据转为列名) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路.
- 在论坛中出现的比较难的sql问题:36(动态行转列 解析json格式字符串)
原文:在论坛中出现的比较难的sql问题:36(动态行转列 解析json格式字符串) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路.
随机推荐
- java泛型--问号?和T或E或K或V的区别
所谓泛型,就是在定义类.接口.方法.参数或成员变量的时候,指定它们操作对象的类型为通用类型. 使用 尖括号 <> 操作符 (The diamond operator )表示泛型, 尖括号内 ...
- java中 try catch的妙用
程序开发中,格式转换的时候,经常由于字符串可能是其他的不可预知的符号导致,字符串转数值失败, 这个时候可以妙用try catch来解决,如下图所示.其实,很多其他不可预知的异常情况,也可以用它来处理. ...
- linux删除用户报错:userdel: user prize is currently used by process 28021
之前创建了一个普通用户prize,现在想删掉它: [root@VM_0_14_centos /]# userdel prize userdel: user prize 发现原来我克隆了一个会话,另一个 ...
- 全面系统Python3入门+进阶-1-8 Python的前景
语言的热度. python在开发效率上有优势 大数据.人工智能 结束
- SQL语句 update 字段=字段+字符串 拼接
update user_info set user_name = concat(user_name,'呵呵呵') where user_name = '哈哈哈';
- SERVER_ADDR
$_SERVER["SERVER_ADDR"] 当前运行脚本的服务器的ip地址
- 【kubeconfig】kubectl命令所使用的集群访问文件
kubectl默认会从$HOME/.kube目录下查找文件名为 config 的文件,也可以通过设置环境变量 KUBECONFIG 或者通过设置 --kubeconfig 去指定其它 kubeconf ...
- composer autoload优化
为生产环境作准备 最后提醒一下,在部署代码到生产环境的时候,别忘了优化一下自动加载: composer dump-autoload --optimize 安装包的时候可以同样使用--optimize- ...
- shell脚本双引号、大括号、if语句注意事项
1.双引号的问题 变量用双引号括起来的意义 如果变量不用双引号括起来,比如echo $a,那么隐含的意义就是,把$a变量的字符串,按照空格.制表符.换行符等符号来分割开.然后把这些分割后的每一项再按 ...
- openpyxl,xlrd,win32com,wxpython,logging
目录 一. openpyxl常用操作总结 二. xlrd常用操作总结 三. win32com常用操作总结 四. 自定义异常 五. 判断中文 六. Excel数字字母转换 七. 使用wxpython进行 ...