T-SQL 定义分割字符串的函数

本文介绍三个SQL函数:获取字符串长度、提取指定索引的元素及遍历字符串元素的方法。通过实际例子展示如何使用这些函数来高效处理字符串数据。

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

CREATEfunctionGet_StrArrayLength

(

@strvarchar(1024),--要分割的字符串

@splitvarchar(10)--分隔符号

)

returnsint

as

begin

declare@locationint

declare@startint

declare@lengthint

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

调用示例:selectdbo.Get_StrArrayLength('78,1,2,3',',')

返回值:4

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

CREATEfunctionGet_StrArrayStrOfIndex

(

@strvarchar(1024),--要分割的字符串

@splitvarchar(10),--分隔符号

@indexint--取第几个元素

)

returnsvarchar(1024)

as

begin

declare@locationint

declare@startint

declare@nextint

declare@seedint

set@str=ltrim(rtrim(@str))

set@start=1

set@next=1

set@seed=len(@split)

set@location=charindex(@split,@str)

while@location<>0and@index>@next

begin

set@start=@location+@seed

set@location=charindex(@split,@str,@start)

set@next=@next+1

end

if@location=0select@location=len(@str)+1

--这儿存在两种情况:1、字符串不存在分隔符号2、字符串中存在分隔符号,跳出while循环后,@location为0,那默认为字符串后边有一个分隔符号。

returnsubstring(@str,@start,@location-@start)

end

调用示例:selectdbo.Get_StrArrayStrOfIndex('8,9,4',',',2)

返回值:9

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

createfunctionf_splitstr(@SourceSqlvarchar(8000),@StrSepratevarchar(100))

returns@temptable(F1varchar(100))

as

begin

declare@chasvarchar(100)

set@SourceSql=@SourceSql+@StrSeprate

while(@SourceSql<>'')

begin

set@ch=left(@SourceSql,charindex(',',@SourceSql,1)-1)

insert@tempvalues(@ch)

set@SourceSql=stuff(@SourceSql,1,charindex(',',@SourceSql,1),'')

end

return

end

----调用

select*fromdbo.f_splitstr('1,2,3,4',',')

--结果:

1

2

3

4

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值