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

怎么处理字符串‘aa bb cc aa dd aa ee cc’ 变成 ‘aa bb cc dd ee’ 将重复的保留一个

2013-08-04 
怎样处理字符串‘aa bb cc aa dd aa ee cc’ 变成 ‘aa bb cc dd ee’ 将重复的保留一个怎样处理字符串‘aa bb

怎样处理字符串‘aa bb cc aa dd aa ee cc’ 变成 ‘aa bb cc dd ee’ 将重复的保留一个
怎样处理字符串‘aa bb cc aa dd aa ee cc’ 变成 ‘aa bb cc dd ee’ 将重复的保留一个?

我有个字段保留放有如‘aa bb cc aa dd aa ee cc’ 这种有重复的值,我要将它去除重复,怎样处理?
[解决办法]
用sql实现有点困难,前台程序用split来处理更方便了
[解决办法]
一个一个的截取进一个临时表,然后在distinct然后在拼接出来新的那个,当然有点复杂,要弄个存储过程,里面使用while 循环
[解决办法]


DECLARE @x varchar(100), @s varchar(100)
SET @x='aa bb cc aa dd aa ee cc'
set @s=''

;with cte
as
(
 SELECT  SUBSTRING(@x, number, CHARINDEX(' ',@x+' ',number)-number) AS [x], number
 FROM   master.dbo.spt_values 
 where [type]='p' AND number BETWEEN 1 AND LEN(@x)
 AND SUBSTRING(' '+@x, number,1)=' '


select @s=@s+' '+x
from cte as A
where not exists(select 1 from cte where x=A.x and number<A.number)
order by number

select @s=stuff(@s,1,1,'')
print @s

[解决办法]
DECLARE @s varchar(100), @x XML 
SET @s='aa bb cc aa dd aa ee cc'
set @x='<x>'+REPLACE(@s,' ','</x><x>')+'</x>'
select CAST(@x.query('distinct-values( data(/x) )
') as varchar(100))as result
[解决办法]


declare @str varchar(1000)='aa bb cc aa dd aa ee cc'
declare @splitstr varchar(20)=' ';

;with t as
(
select @str as fstrold,SUBSTRING(@str,1,charindex(@splitstr,@str+@splitstr)) fstr
,SUBSTRING(@str,charindex(@splitstr,@str+@splitstr)+1,len(@str)) fsplit
union all


select @str fstrold,SUBSTRING(fsplit,1,charindex(@splitstr,fsplit)) fstr
,SUBSTRING(fsplit,charindex(@splitstr,fsplit)+1,len(@str)) 
from t
where charindex(@splitstr,fsplit)>0
)
select fstrold,stuff((select distinct ' '+fstr from t for xml path('')),1,1,'') as fstrnew
from
(
select distinct fstrold,fstr
from t
) t1
group by fstrold

热点排行