首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

查询字符串中某个字符串出现的次数大于2的记录,该怎么解决

2012-05-27 
查询字符串中某个字符串出现的次数大于2的记录IDsRemark1 YI1203270018,YI1203290005,YI1203290006,YI1203

查询字符串中某个字符串出现的次数大于2的记录
ID sRemark
1 YI1203270018,YI1203290005,YI1203290006,YI1203290006,YC1203270049,
2 YI1111030008,YC1111030013,YC1111030012,YC1111210212,YC1111210212,3 YI1112270006,YC1112270043,YI1201050013,YC1201050029,YI1201110025,
4 YC1202170017,YI1202230013,YC1202230302,YC1202280100,YC1202280107,
5 YI1111030001,YC1111030001,YC1111030003,YC1111030003,YI1111230006,
上面的数据我想通过SQL来查询,查询出的结果是:
ID sRemark
1 YI1203270018,YI1203290005,YI1203290006,YI1203290006,YC1203270049,
2 YI1111030008,YC1111030013,YC1111030012,YC1111210212,YC1111210212,
5 YI1111030001,YC1111030001,YC1111030003,YC1111030003,YI1111230006,
就是查出sRemark中有两个或两个以上的相同单号的信息

不好意思我分不够了,只有11分了

[解决办法]

SQL code
if OBJECT_ID('t_test','U') is not null drop table t_testgocreate table t_test(    ID int,    sRemark varchar(2000))goinsert into t_test(ID,sRemark)select 1,'YI1203270018,YI1203290005,YI1203290006,YI1203290006,YC1203270049,' union allselect 2,'YI1111030008,YC1111030013,YC1111030012,YC1111210212,YC1111210212,' union allselect 3,'YI1112270006,YC1112270043,YI1201050013,YC1201050029,YI1201110025,' union allselect 4,'YC1202170017,YI1202230013,YC1202230302,YC1202280100,YC1202280107,' union allselect 5,'YI1111030001,YC1111030001,YC1111030003,YC1111030003,YI1111230006,' gowith cte as(    --一行转多行    select         ID,        convert(varchar(200),left(sRemark,CHARINDEX(',',sRemark)-1)) as col2,        convert(varchar(200),RIGHT(sRemark,LEN(sRemark)-CHARINDEX(',',sRemark))) as temp    from t_test    union all    select         ID,        convert(varchar(200),left(temp,CHARINDEX(',',temp)-1)) as col2,        convert(varchar(200),RIGHT(temp,LEN(temp)-CHARINDEX(',',temp))) as temp    from cte where len(temp)>4),cte2 as(    --查询出出现重复的数据ID    select         ID,        col2    from cte a    group by a.ID,a.col2     having COUNT(col2)>1)    --关联查询select     b.* from cte2 aleft join t_test b  on a.ID=b.IDorder by b.ID--ID  sRemark--1    YI1203270018,YI1203290005,YI1203290006,YI1203290006,YC1203270049,--2    YI1111030008,YC1111030013,YC1111030012,YC1111210212,YC1111210212,--5    YI1111030001,YC1111030001,YC1111030003,YC1111030003,YI1111230006, 

热点排行