截取字符串:例如 qweqe,1231423,werwer;qweqe,1231423,werwer
返回一个表
--split:循环截取法
CREATE FUNCTION f_splitSTR(
@s varchar(8000), --待分拆的字符串
@split varchar(10) --数据分隔符
)RETURNS @re TABLE(col varchar(100))
AS
BEGIN
DECLARE @splitlen int
SET @splitlen=LEN(@split+'a')-2--多位分隔字符串比如 ';;',';,'等
WHILE CHARINDEX(@split,@s)>0
BEGIN
INSERT @re VALUES(LEFT(@s,CHARINDEX(@split,@s)-1))
SET @s=STUFF(@s,1,CHARINDEX(@split,@s)+@splitlen,'')
END
INSERT @re VALUES(@s)
RETURN
END
GO
选取指定字符串值
例如: 123,456,789,012
我要获取456这个值
select dbo.f_split_l(‘123,456,789,012’,’,’,’2’)
就能得到 456这个值
CREATE FUNCTION dbo.f_split_l(--方法:循环截取法,选取指定位置的字符串
@s varchar(8000), --待分拆的字符串
@split varchar(10), --数据分隔符
@in int --取的第几条数据
)RETURNS VARCHAR(100)
AS
BEGIN
DECLARE @splitlen int,@cou int,@re varchar(100)
SET @s=@s+@split --在字符串最后添加一个数据分隔符
SET @splitlen=LEN(@split+'a')-2
SET @cou=0
WHILE CHARINDEX(@split,@s)>0 AND @in>@cou
BEGIN
SET @re=(LEFT(@s,CHARINDEX(@split,@s)-1))
SET @s=STUFF(@s,1,CHARINDEX(@split,@s)+@splitlen,'')
SET @cou=@cou+1
END
IF(CHARINDEX(@split,@s)<=0) AND @in>@cou
SET @re=null
RETURN @re
END