SqlServer字符串替换并去重

来源:互联网 发布:良辰好景知几何txt 编辑:程序博客网 时间:2024/06/05 15:24
/*  功能说明:字符串替换并去重, 字符串每一项以 @delimiter 隔开  参数说明:@job_type_list 待处理字符串;   @delimiter 分割符号, @oldtype 待替换字符串,   @newtype 替换的字符串  输出结果说明:Set @delimiter =','SET @job_type_list = '123,45'SET @newtype='13'SET @oldtype='45'Return "123,13"SET @job_type_list = '123,45,13,2,45'SET @newtype='13'SET @oldtype='45'Return "123,13,2"*/CREATE      FUNCTION [zhaopin].[FN_ReplaceString](        @job_type_list varchar(1000),   @delimiter char(1),   @oldtype varchar(100),   @newtype varchar(100) )RETURNS varchar(1000)Asbegindeclare @jobtype varchar(1000)declare @number intDECLARE @startpos intif (@job_type_list is NULL)return nullif  (@oldtype is null or @newtype is NULL)return @job_type_listSET @job_type_list = replace(@job_type_list, ' ', '')SET @jobtype = replace(@delimiter + @job_type_list + @delimiter , @delimiter + @oldtype + @delimiter, @delimiter + @newtype + @delimiter)SET @number = len(replace(@jobtype,@newtype,@newtype+'-'))-len(@jobtype)IF @number>1 BEGINSET @startpos = CHARINDEX(@delimiter + @newtype + @delimiter,@jobtype) + LEN(@delimiter + @newtype + @delimiter)SET @job_type_list = left(@jobtype,@startpos-1)SET @jobtype = SUBSTRING(@jobtype, @startpos-1,LEN(@jobtype))WHILE(CHARINDEX(@delimiter + @newtype + @delimiter,@jobtype)>0)BEGINSET @jobtype = replace(@jobtype,@delimiter + @newtype + @delimiter,',')ENDIF(LEFT(@jobtype, 1) = @delimiter )SET @jobtype=RIGHT(@jobtype,LEN(@jobtype)-1)SET @jobtype = @job_type_list + @jobtypeENDIF(len(@jobtype)>2)SET @jobtype = substring(@jobtype,2,len(@jobtype)-2)RETURN @jobtypeend

原创粉丝点击