SQL 如何去除重复的字符串

方案一:
declare @ret varchar(8000)
select @ret = 'APR-11,APR12,APR06,APR-11,APR12,APR06'

select distinct name=substring(@ret,number,charindex(',',@ret+',',number)-number)
from master..spt_values
where number<=len(@ret) and type='P' 
and substring(','+@ret,number,1)=','
--------------------------
APR06
APR-11
APR12
方案二:
create function GetDistinct(@str varchar(1000))
returns varchar(1000)
as
begin
    declare @temp varchar(1000)
    while(charindex(','+substring(@str,1,charindex(',',@str)-1)+',',','+isnull(@temp,'')+',')=0)
    begin
        set @temp=isnull(@temp+',','')+substring(@str,1,charindex(',',@str)-1)
        set @str=substring(@str,charindex(',',@str)+1,len(@str))
    end
    return @temp
end
go

select dbo.getdistinct('APR-11,APR12,APR06,APR-11,APR12,APR06')
--结果:
--------------------------
APR-11,APR12,APR06
方案三:
 
declare @ret varchar(8000)
select @ret = 'APR-11,APR12,APR06,APR-11,APR12,APR06'

select @ret = 'select '''+replace(@ret,',',''' union select ''')+''''

exec(@ret)
----------------------
APR06
APR-11
APR12

方案四:
declare @str varchar(8000)
declare @ret varchar(8000),@return varchar(8000)

select @str = 'APR-11,APR12,APR06,APR-11,APR12,APR06'

select @str = @str+','

while charindex(',',@str) > 0
begin
    select @ret = substring(@str,1,charindex(',',@str)-1)
    
    select @return = isnull(@return+',','')+@ret

    select @str = replace(@str,@ret+',','')
end 

select @return
---------------------------
APR-11,APR12,APR06



 

 

 



 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值