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

去反复

2013-09-17 
去重复 dianhaos_name10011,2,3,3,4,5,6,,, 10022,7,8,9,10,10去掉重复和没有值的变成dianhaos_name10011,

去重复


 dianhao        s_name 
 1001           1,2,3,3,4,5,6,,,
 1002           2,7,8,9,10,10


去掉重复和没有值的变成

dianhao    s_name
1001       1,2,3,4,5,6
 1002      2,7,8,9,10
[解决办法]

create table #tb(dianhao int,s_name varchar(100))
insert into #tb
select 1001,'1,2,3,3,4,5,6'
union all select 1002,'2,7,8,9,10,10'


SELECT distinct dianhao,SUBSTRING([s_name],number,CHARINDEX(',',[s_name]+',',number)-number) as [s_name]
into test
from #tb a, master..spt_values 
where number >=1 and type='p'  
and number<len([s_name])  and substring(','+[s_name],number,1)=','
go


create function dbo.fn_b(@a varchar(10))
returns varchar(1000)
as 
begin
declare @s varchar(1000)
set @s=''
select @s=@s+[s_name]+',' from test where dianhao=@a
if len(@s)>0 set @s=left(@s,len(@s)-1)
return (@s)
end


select dianhao,dbo.fn_b(dianhao) as s_name
from test
group by dianhao

drop table #tb,test
drop function dbo.fn_b

/*
dianhao     s_name
-----------------------
10011,2,3,4,5
100210,2,7,8,9

*/

热点排行