CREATE FUNCTION dbo.f_split_strings(@s varchar(8000),@mc varchar(10),@dc varchar(10))
RETURNS @t TABLE(s1 varchar(4000),s2 varchar(4000))
AS
BEGIN
--作者:pbsql
--将指定字符串@s以字符串@mc为分隔拆分,再将拆分后的字符串按@dc拆分,最后得到记录集
DECLARE @string varchar(8000),@i int,@j int,@ml int,@dl int
SELECT @i=CHARINDEX(@mc,@s),@ml=LEN(@mc),@dl=LEN(@dc)
WHILE @i>0
BEGIN
SELECT @string=LEFT(@s,@i-1),@j=CHARINDEX(@dc,@string)
INSERT @t(s1,s2)
VALUES(LEFT(@string,@j-1),SUBSTRING(@string,@j+@dl,LEN(@string)-@j-@dl+1))
SELECT @s=STUFF(@s,1,@i+@ml-1,''),@i=CHARINDEX(@mc,@s)
END
SELECT @string=@s,@j=CHARINDEX(@dc,@string)
INSERT @t(s1,s2)
VALUES(LEFT(@string,@j-1),SUBSTRING(@string,@j+@dl,LEN(@string)-@j-@dl+1))
RETURN
END
GO
调用示例:
SELECT * FROM dbo.f_split_strings('1,a;2,b;3,c',';',',')
返回:
s1 s2
1 a
2 b
3 c
本文介绍了一个SQL函数f_split_strings,该函数接受三个参数:待拆分的字符串、主分隔符和次分隔符。函数首先使用主分隔符将输入字符串拆分成多个部分,然后进一步使用次分隔符对每一部分进行再次拆分。
171万+

被折叠的 条评论
为什么被折叠?



