SQL分割與去重

來源:互聯網
上載者:User

 

-----------建立實現split功能 的函數------------
create function f_split(@SourceSql varchar(8000),@StrSeprate varchar(10))
returns @temp table(a varchar(100))
as
begin
    declare @i int
    set @SourceSql=rtrim(ltrim(@SourceSql))
    set @i=charindex(@StrSeprate,@SourceSql)
    while @i>=1
    begin
        insert @temp values(left(@SourceSql,@i-1))
        set @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i)
        set @i=charindex(@StrSeprate,@SourceSql)
    end
    if @SourceSql<>''
       insert @temp values(@SourceSql)
    return
end
GO

-----------建立實現split並去重功能 的函數------------
create function SplitAndDistinct(@SourceStr varchar(500),@StrSeprate varchar(10))
    returns varchar(500)
AS
begin
declare @pos int
declare @ret varchar(20)
declare @table table(ret varchar(20))
declare @SplitAndDistinctStr varchar(500)
select @SourceStr = @SourceStr + @StrSeprate
select @pos = charindex(@StrSeprate,@SourceStr)
while @pos > 0
begin
    select @ret = substring(@SourceStr,1,@pos-1)
    insert into @table select @ret
    select @SourceStr = stuff(@SourceStr,1,@pos,'')
    select @pos = charindex(@StrSeprate,@SourceStr)
end
select @SplitAndDistinctStr = ''
select @SplitAndDistinctStr = @SplitAndDistinctStr + @StrSeprate + ret from (select distinct ret from @table) t
return @SplitAndDistinctStr
end
GO

-----------測試------------

select distinct * from dbo.f_split('123|abc|000|777|000 |111', '|')
Go
select  dbo.SplitAndDistinct('123|abc|000|777|000|111 ', '|')

GO

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.