CREATE function [dbo].[Get_StrOfIndex]
(
@str varchar(max), --要分割的字符串
@split varchar(10), --分隔符号
@index int --取第几个元素,注意从1开始
)
--returns varchar(1024)
returns varchar(max)
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,@str,@start)
set @next=@next+1
end
--说明:这儿存在两种情况:
--1、字符串不存在分隔符号
--2、字符串中存在分隔符号,跳出while循环后,@location为0,那默认为字符串后边有一个分隔符号。
if @location=0
select @location=len(@str)+1
return substring(@str,@start,@location-@start)
end
调用:
DECLARE
@RHPvarchar(200)
SET
@RHP=(SELECT dbo.Get_StrOfIndex (@STR,',',4))
用一个字符型变量接收,
函数的三个参数分别代表
'要截取的字符串
@STR','特殊字符 ,'特殊字符出现的第几次'