当前位置: 移动技术网 > IT编程>数据库>MSSQL > SQL根据指定分隔符分解字符串实现步骤

SQL根据指定分隔符分解字符串实现步骤

2017年12月12日  | 移动技术网IT编程  | 我要评论

最新七乐彩 一休彩票1xcp,中年妇女图片,故乡的原风景下载

如果有一个字符串 eg: "sun,star,moon,clouds",想要在ms sql中根据给定的分隔符','把这个字符串分解成各个元素[sun] [star] [moon] [clouds],如何实现呢?为此,创建一个function,代码如下:
复制代码 代码如下:

create function [dbo].[split_strbydelimiter](@string varchar(8000), @delimiter char(1))
returns @temptable table (items varchar(8000))
as
begin
declare @idx int
declare @slice varchar(8000)
select @idx = 1
if len(@string)<1 or @string is null return
while @idx!= 0
begin
set @idx = charindex(@delimiter,@string)
if @idx!=0
set @slice = left(@string,@idx - 1)
else
set @slice = @string
if(len(@slice)>0)
insert into @temptable(items) values(@slice)
set @string = right(@string,len(@string) - @idx)
if len(@string) = 0 break
end
return
end

示例:如果输入
select * from dbo.split_strbydelimiter('sun,star,moon,clouds',',')
结果返回
sun
star
moon
clouds
在上面的代码做变形,返回有多少个元素
复制代码 代码如下:

create function [dbo].[getcount_split_strbydelimiter](@string varchar(8000), @delimiter char(1))
returns int
as
begin
declare @temptable table (items varchar(8000))
declare @splitcount int
declare @idx int
declare @slice varchar(8000)
select @idx = 1
if len(@string)<1 or @string is null return 0
while @idx!= 0
begin
set @idx = charindex(@delimiter,@string)
if @idx!=0
set @slice = left(@string,@idx - 1)
else
set @slice = @string
if(len(@slice)>0)
insert into @temptable(items) values(@slice)
set @string = right(@string,len(@string) - @idx)
if len(@string) = 0 break
end
set @splitcount=(select count(*) from @temptable)
return @splitcount
end

示例
select dbo.getcount_split_strbydelimiter('sun,star,moon,clouds',',')
结果返回
4

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网