在论坛中出现的比较难的sql问题:25(字符串拆分3)
原文:在论坛中出现的比较难的sql问题:25(字符串拆分3)
最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了。
所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路。
1、求教超难的字符串去重问题?
http://bbs.csdn.net/topics/390719864
现在小弟有如此一数据表
结构如下:
select 1 as tname,'01:0102;02:0102;03:0102;04:0102,0101;05:0102'as tstr into tb1
insert into tb1 select 2,'01:0101,0102'
insert into tb1 select 3,'01:0102;02:0102;03:0102;04:0102;05:0102'
insert into tb1 select 4,'01:0102,0103'
insert into tb1 select 5,'0104'
insert into tb1 select 6,'01:0102;02:0102;03:0102;04:0102;05:0102'
insert into tb1 select 7,'01:0102;02:0102;03:0102;04:0102,0101;05:0102'
上表数据代表的含义
tname 为序号,不用管
tstr 为编组内容
01:0101,0102 意思为01组,组员为编号0101和0102两人组成。
01:0102;02:0102 意思为编号0102的组员,即在01组,又在02组。
可见有很多重复。
现在查询想得到如下结果:即找出这几些编组到底有哪些组员:
0101,0102,0103,0104
求存储过程,不能创建自定义函数,谢谢
注意数据库版本为sqlserver 2k
我的方法:
-
--drop table tbl
-
-
create table tbl(tname int,tstr varchar(100))
-
-
insert into tbl
-
select 1 ,'01:0102;02:0102;03:0102;04:0102,0101;05:0102'
-
-
insert into tbl
-
select 2,'01:0101,0102'
-
-
insert into tbl
-
select 3,'01:0102;02:0102;03:0102;04:0102;05:0102'
-
-
insert into tbl
-
select 4,'01:0102,0103'
-
-
insert into tbl
-
select 5,'0104'
-
-
insert into tbl
-
select 6,'01:0102;02:0102;03:0102;04:0102;05:0102'
-
-
insert into tbl
-
select 7,'01:0102;02:0102;03:0102;04:0102,0101;05:0102'
-
go
-
declare @str varchar(1000)
-
-
set @str = ''
-
-
select @str = @str + ','+ [编组]
-
from
-
(
-
select --*,
-
distinct
-
case when vv like '%:%' then SUBSTRING(vv,charindex(':',vv)+1,len(vv))
-
else vv
-
end '编组'
-
from
-
(
-
select tname,
-
tstr,
-
v,
-
SUBSTRING(t.v, number ,CHARINDEX(',',t.v+',',number)-number) vv
-
from
-
(
-
select tname,
-
tstr,
-
SUBSTRING(t.tstr, number ,CHARINDEX(';',t.tstr+';',number)-number) v
-
from tbl t,master..spt_values s
-
where s.number >=1
-
and s.type = 'P'
-
and SUBSTRING(';'+t.tstr,s.number,1) = ';'
-
)t,master..spt_values s
-
where s.number >=1
-
and s.type = 'P'
-
and SUBSTRING(','+t.v,s.number,1) = ','
-
)t
-
)t
-
order by [编组]
-
-
select stuff(@str,1,1,'') as [编组]
-
/*
-
编组
-
0101,0102,0103,0104
-
*/
在论坛中出现的比较难的sql问题:25(字符串拆分3)的更多相关文章
- 在论坛中出现的比较难的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格式字符串) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路.
随机推荐
- 【转】IDEA新建项目时,没有Spring Initializr选项(亲测有效)
最近开始使用IDEA作为开发工具,然后也是打算开始学习使用spring boot.看着博客来进行操作上手spring boot,很多都是说创建一个新项目(Create New Project) 选择 ...
- c# 验证
public class RegularExpressionsHelper { /// <summary> /// 对用户名进行格式进行检查的正则表达式 /// </summary& ...
- ionic4.x网络请求
创建common服务: import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/ ...
- 将C++资源文件读取出来
HRSRC hResource = FindResource(GetModuleHandle(NULL), MAKEINTRESOURCE(IDR_CALC), TEXT(&q ...
- 内存检测工具valgrind的安装和简单使用
1. 安装 .tar.bz2 cd valgrind- sudo ./configure sudo make sudo make install 2. 简单使用 #include <stdio. ...
- pandas绘制矩阵散点图(scatter_matrix)的方法
以 sklearn的iris样本为数据集 import matplotlib.pyplot as plt from scipy import sparse import numpy as np imp ...
- Ideal 使用帮助手册
1.设置Ideal启动时选择工作空间 将Reopen last project on starup 取消勾选
- NE(Network Embedding)
定义:找到一种映射函数,该函数将网络中的每个节点转换为低维度的潜在表示(即降维). 参考链接:https://www.jiqizhixin.com/articles/2018-08-14-10
- 数据标记系列——图像分割 & Curve-GCN
在之前的文章中(参考:),我们提到了Polygon-RNN++在数据标注中的应用.今天不得不提到多伦多大学与英伟达联合公布的一项最新研究:Curve-GCN的应用结果显示图像标注速度提升10倍. Cu ...
- MockMvc 进行 controller层单元测试 事务自动回滚 完整实例
package com.ieou.ms_backend.controller; import com.google.gson.Gson; import com.ieou.ms_backend.dto. ...
