标题: MSSQL网站制作之SQL里相似SPLIT的支解字符串函数 [打印本页] 作者: 再现理想 时间: 2015-1-16 22:23 标题: MSSQL网站制作之SQL里相似SPLIT的支解字符串函数 Federated将不同的Mysql服务器联合起来,逻辑上组成一个完整的数据库。非常适合分布式应用函数|字符串T-SQL对字符串的处置才能对照弱,好比我要轮回遍历象1,2,3,4,5如许的字符串,假如用数组的话,遍历很复杂,可是T-SQL不撑持数组,以是处置上去对照贫苦。下边的函数,完成了象数组一样去向理字符串。
一,用一时表作为数组createfunctionf_split(@cvarchar(2000),@splitvarchar(2))
returns@ttable(colvarchar(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
2、按指定标记支解字符串,前往支解后的元素个数,办法很复杂,就是看字符串中存在几个分开标记,然后再加一,就是请求的了局。
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@location0
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
3、按指定标记支解字符串,前往支解后指定索引的第几个元素,象数组一样便利
CREATEfunctionGet_StrArrayStrOfIndex
(
@strvarchar(1024),--要支解的字符串
@splitvarchar(10),--分开标记
@indexint--取第几个元素
)
returnsvarchar(1024)
as
begin
declare@locationint
declare@startint
declare@nextint
declare@seedint
set@location=charindex(@split,@str)
while@location0and@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
3、分离上边两个函数,象数组一样遍历字符串中的元素
declare@strvarchar(50)
set@str=1,2,3,4,5
declare@nextint
set@next=1
while@next<=dbo.Get_StrArrayLength(@str,,)
begin
printdbo.Get_StrArrayStrOfIndex(@str,,,@next)
set@next=@next+1
end