SQL Server 自定义字符串分割函数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了SQL Server 自定义字符串分割函数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3163字,纯文字阅读大概需要5分钟。
内容图文
create function Func_StrArrayLength 2 ( 3 @str varchar(1024), --要分割的字符串 4 @split varchar(10) --分隔符号 5 ) 6 returns int 7 as 8 begin 9 declare @location int 10 declare @start int 11 declare @length int 12 13 set @str=ltrim(rtrim(@str)) 14 set @location=charindex(@split,@str) 15 set @length=1 16 while @location<>0 17 begin 18 set @start=@location+1 19 set @location=charindex(@split,@str,@start) 20 set @length=@length+1 21 end 22 return @length 23 end 24 go 调用示例:select dbo.Func_StrArrayLength(‘78,1,2,3‘,‘,‘) 返回值:4 二、按指定符号分割字符串,返回分割后指定索引的第几个元素,象数组一样方便(标量值函数)1 create function Func_StrArrayStrOfIndex 2 ( 3 @str varchar(1024), --要分割的字符串 4 @split varchar(10), --分隔符号 5 @index int --取第几个元素 6 ) 7 returns varchar(1024) 8 as 9 begin 10 declare @location int 11 declare @start int 12 declare @next int 13 declare @seed int 14 15 set @str=ltrim(rtrim(@str)) 16 set @start=1 17 set @next=1 18 set @seed=len(@split) 19 20 set @location=charindex(@split,@str) 21 while @location<>0 and @index>@next 22 begin 23 set @start=@location+@seed 24 set @location=charindex(@split,@str,@start) 25 set @next=@next+1 26 end 27 if @location =0 select @location =len(@str)+1 28 --这儿存在两种情况:、字符串不存在分隔符号2、字符串中存在分隔符号,跳出while循环后,@location为,那默认为字符串后边有一个分隔符号。 29 30 return substring(@str,@start,@location-@start) 31 end 32 go调用示例:select dbo.Func_StrArrayStrOfIndex(‘8,9,4‘,‘,‘,2) 返回值:9 三、结合上边两个函数,像数组一样遍历字符串中的元素(表值函数)
1 create function Func_SplitStr(@SourceSql varchar(8000), @StrSeprate varchar(100)) 2 returns @temp table(F1 varchar(100)) 3 as 4 begin 5 declare @ch as varchar(100) 6 set @SourceSql=@SourceSql+@StrSeprate 7 while(@SourceSql<>‘‘) 8 begin 9 set @ch=left(@SourceSql,charindex(‘,‘,@SourceSql,1)-1) 10 insert @temp values(@ch) 11 set @SourceSql=stuff(@SourceSql,1,charindex(‘,‘,@SourceSql,1),‘‘) 12 end 13 return 14 end 15 go----调用 select * from dbo.Func_SplitStr(‘1,2,3,4‘,‘,‘) --结果: 1 2 3
4
另一种方式(表值函数):
1 create function Func_SplitStr(@str nvarchar(2000),@split nvarchar(2)) 2 returns @t table(AccountCodeID int ) 3 as 4 begin 5 declare @tmpAccountCodeID int,@getIndex int 6 set @getIndex=charindex(‘,‘,@str) 7 while(@getIndex<>0) 8 begin 9 set @tmpAccountCodeID=convert(int,substring(@str,1,@getIndex-1)) 10 insert into @t(AccountCodeID) values (@tmpAccountCodeID) 11 set @str=stuff(@str,1,@getIndex,‘‘) 12 set @getIndex=charindex(‘,‘,@str) 13 end 14 insert into @t(AccountCodeID) values (@str) 15 return 16 end 17 go----调用 select * from dbo.Func_SplitStr(‘1,2,3,4‘,‘,‘) --结果: 1 2 3 4
SQL Server 自定义字符串分割函数
标签:
本文系统来源:http://www.cnblogs.com/lonelyxmas/p/4537661.html
内容总结
以上是互联网集市为您收集整理的SQL Server 自定义字符串分割函数全部内容,希望文章能够帮你解决SQL Server 自定义字符串分割函数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。