SQL server中将传入的字符串按照特定的分隔符拆分转为一列

效果如下:
在这里插入图片描述
下面贴上存储过程的代码,大家可以自行复制过去创建存储过程

CREATE Function [dbo].[GetTableFromText](@ParaContext varchar(max),@splitChar char) returns @ReturnTable table(ResultColumn varchar(200))
as
Begin
 	Declare @startIndex int
	Declare @EndIndex	int
	declare @ParaStr varchar(max)
	declare @End int,@PosIndex	int , @varLength int 
	set @End = 1 
	Set @startIndex=0
	set @varLength = 1000 --字符串长度分隔成定长的来进行处理
	Set @PosIndex=0
	Declare @substr varchar(200)
	Declare @DataTextlen int
	Set @DataTextlen=datalength(@ParaContext)
	while(@End=1)
		begin
			if(@DataTextlen > @varLength)	
				begin				
					set @ParaStr = substring(@ParaContext,@varLength+1,@DataTextlen -@varLength)
					Set @PosIndex=charindex(@splitChar,@ParaStr)
					if(@PosIndex >0) 
						set @ParaStr = substring( @ParaContext,1,@varLength + @PosIndex) 
					else
						set @ParaStr = @ParaContext
					set @DataTextlen = @DataTextlen - @varLength - @PosIndex
					set @ParaContext = substring(@ParaContext,@varLength+@PosIndex+1,@DataTextlen)
					Set @startIndex=0	
				end 
			else
				begin
					select @ParaStr = @ParaContext,@End = 0
					Set @startIndex=0
				end
			
			Set @EndIndex= charindex(@splitChar,@ParaStr)
			While @startIndex<@EndIndex
				Begin
					
					Set @substr=SubString(@ParaStr,@startIndex+1,@EndIndex-@startIndex-1)
					
					insert into @ReturnTable values(@substr)
					Set @startIndex=@EndIndex
					Set @EndIndex= charindex(@splitChar,@ParaStr,@EndIndex+1)
				End
		end
		If @startIndex<@DataTextlen
			Begin
				Set @substr=SubString(@ParaStr,@startIndex+1,@DataTextlen-@startIndex)
				insert into @ReturnTable values(@substr)
			End
	return
End
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值