怎样处理字符串‘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