MySQL里实现类似SPLIT的分割字符串的函数
2022-11-12 09:22:23
内容摘要
这篇文章主要为大家详细介绍了MySQL里实现类似SPLIT的分割字符串的函数,具有一定的参考价值,可以用来参考一下。
对此感兴趣的朋友,看看idc笔记做的技术笔记!下边的函数,实现了
文章正文
这篇文章主要为大家详细介绍了MySQL里实现类似SPLIT的分割字符串的函数,具有一定的参考价值,可以用来参考一下。
对此感兴趣的朋友,看看idc笔记做的技术笔记!
下边的函数,实现了象数组一样去处理字符串。一,用临时表作为数组代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <code> create function f_split(@c varchar(2000),@split varchar(2)) returns @t table(col varchar(20)) as begin while (charindex(@split,@c)<>0) begin insert @t(col) values (substring(@c,1,charindex(@split,@c)-1)) set @c = stuff(@c,1,charindex(@split,@c), '' ) end insert @t(col) values (@c) return end go select * from dbo.f_split( 'dfkd,dfdkdf,dfdkf,dffjk' , ',' ) drop function f_split col -------------------- dfkd dfdkdf dfdkf dffjk (所影响的行数为 4 行) </code> |
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <code> CREATE function Get_StrArrayLength ( @str varchar(1024), --要分割的字符串 @split varchar(10) --分隔符号 ) 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 </code> |
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <code> CREATE function Get_StrArrayStrOfIndex ( @str varchar(1024), --要分割的字符串 @split varchar(10), --分隔符号 @index int --取第几个元素 ) returns varchar(1024) as begin declare @location int declare @start int declare @next int declare @seed int set @str=ltrim(rtrim(@str)) set @start=1 set @next=1 set @seed=len(@split) set @location=charindex(@split,@str) while @location<>0 and @index>@next begin set @start=@location+@seed set @location=charindex(@split,@str,@start) set @next=@next+1 end if @location =0 select @location =len(@str)+1 --这儿存在两种情况:1、字符串不存在分隔符号 2、字符串中存在分隔符号,跳出 while 循环后,@location为0,那默认为字符串后边有一个分隔符号。 return substring(@str,@start,@location-@start) end </code> |
代码如下:
1 2 3 4 5 6 7 8 9 10 11 | <code> declare @str varchar(50) set @str= '1,2,3,4,5' declare @next int set @next=1 while @next<=dbo.Get_StrArrayLength(@str, ',' ) begin print dbo.Get_StrArrayStrOfIndex(@str, ',' ,@next) set @next=@next+1 end </code> |
注:关于MySQL里实现类似SPLIT的分割字符串的函数的内容就先介绍到这里,更多相关文章的可以留意
代码注释