--獲取被分隔符分割開來的字符串中參數的個數
CREATE function GetStrArrayLength
(
@str varchar(1024),  --要分割的字符串
@split varchar(10)  --分隔符号
)
returns int
as
begin
declare@location int
declare@start int
declare@length int
set@str=ltrim(rtrim(@str))--剔除字符串的⾸尾空格
set@location=charindex(@split,@str)--第⼀個分隔符在字符串中的索引數字例如'a1,b2,c3,d4'中第⼀個','的位置索引set@length=1--字符串被分隔符分割開來的參數個數,這裡初始化為⼀個
while@location<>0--如果字符串中還存在分隔符那麼該分隔符在字符串中的索引就不會為0,也就是不等於0
begin
set@start=@location+1--從第⼀個分隔符索引位置後的字符串中開始檢索,檢索的起始是第⼀個分隔符後的⼀位開始set@location=charindex(@split,@str,@start)
set@length=@length+1
end
return@length
end
---------------------------------------
--获得带分隔符的字符串中指定索引对应的间隔项
creat FUNCTION dbo.f_GetStr(
@s varchar(8000),      --包含多个数据项的字符串
@pos int,            --要获取的数据项的位置
@split varchar(10)    --数据分隔符
)RETURNS varchar(1000)
AS
BEGIN
IF@s IS NULL RETURN(NULL)
DECLARE@splitlen int
SELECT@splitlen=LEN(@split+'a')-2
WHILE@pos>1AND CHARINDEX(@split,@s+@split)>0
SELECT@pos=@pos-1,
@s=STUFF(@s,1,CHARINDEX(@split,@s+@split)+@splitlen,'')
RETURN(ISNULL(LEFT(@s,CHARINDEX(@split,@s+@split)-1),''))
END
--------------------------------------------------------------
获得指定索引对应的间隔开来的单项字符数据
create function GetStr
(
@str varchar(1024),  --要分割的字符串
@split varchar(10),  --分隔符号
@index int--取第⼏个元素
)
returns varchar(1024)
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)字符串截取 sql
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
return substring(@str,@start,@location-@start)
end

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。