标签:分割 set varchar int charindex split str SQL 字符串
一、SQL分割字符串,返回临时表
方法一:
1 create function [dbo].[f_split] 2 ( 3 @c varchar(2000),--需要分割的字符串(例如:1,2,3,4,5 我|和|你) 4 @split varchar(2)--分隔符(例如 , | $) 5 ) 6 returns @t table(col varchar(200))--返回表 7 as 8 begin 9 while(charindex(@split,@c)<>0) 10 begin 11 insert @t(col) values (substring(@c,1,charindex(@split,@c)-1)) 12 set @c = stuff(@c,1,charindex(@split,@c),'') 13 end 14 insert @t(col) values (@c) 15 return 16 end
方法二:
1 create function [dbo].[f_split] 2 ( 3 @str varchar(2000),--需要分割的字符串(例如:1,2,3,4,5 我|和|你) 4 @spliter varchar(2)--分隔符(例如 , | $) 5 ) 6 returns @tb table(ch varchar(200))--返回表 7 as 8 begin 9 declare @num int,@pos int, @nextpos int 10 set @num = 0 11 set @pos = 1 12 while(@pos <= LEN(@str)) 13 begin 14 select @nextpos = CHARINDEX(@spliter, @str, @pos) 15 if(@nextpos = 0 or @nextpos is null) 16 select @nextpos = LEN(@str) + 1 17 insert into @tb values(RTRIM(LTRIM(SUBSTRING(@str, @pos, @nextpos - @pos)))) 18 select @pos = @nextpos+1 19 end 20 return 21 end
二、SQL分割字符串,返回元素个数
create function f_GetArrayLength ( @str varchar(2000),--需要分割的字符串(例如:1,2,3,4,5 我|和|你) @split varchar(2)--分隔符(例如 , | $) ) returns int as begin declare @location int declare @start int declare @length int set @str=ltrim(rtrim(@str)) set @location=charindex(@split,@str) set @length=1 while @location<>0 begin set @start=@location+1 set @location=charindex(@split,@str,@start) set @length=@length+1 end return @length end
标签:分割,set,varchar,int,charindex,split,str,SQL,字符串 来源: https://www.cnblogs.com/zhipeng007/p/10777728.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。