加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQL Server SQL里类似SPLIT的分割字符串函数实现方法

发布时间:2020-12-12 07:44:57 所属栏目:MsSql教程 来源:网络整理
导读:感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编两巴掌来看看吧! 一,用临时表作为数组 代码如下: create function f_split(@c varchar(2000),@split varchar(2)) returns @t table(col varchar(20)) as begin while(charindex(@split,@c)0) begin inse

感兴趣的小伙伴,下面一起跟随编程之家 52php.cn的小编两巴掌来看看吧!

一,用临时表作为数组

代码如下:

 
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,@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 行)


二、按指定符号分割字符串,返回分割后的元素个数,方法很简单,就是看字符串中存在多少个分隔符号,然后再加一,就是要求的结果。

代码如下:

 
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 

调用示例:select dbo.Get_StrArrayLength('78,2,3',')
返回值:4

三、按指定符号分割字符串,返回分割后指定索引的第几个元素,象数组一样方便

代码如下:

 
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,@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 

调用示例:select dbo.Get_StrArrayStrOfIndex('8,9,4',2)
返回值:9

三、结合上边两个函数,象数组一样遍历字符串中的元素

代码如下:

 
declare @str varchar(50) 
set @str='1,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 

调用结果:
1
2
3
4
5

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读