CREATE FUNCTION splitStr
(
@String NVARCHAR(4000),
@Separator NVARCHAR(10)
)
RETURNS @strTable TABLE (strVal NVarchar(4000))
BEGIN
DECLARE @occu INT,
@tempVal NVARCHAR(4000),
@Counter INT
SET @Counter=0
IF SUBSTRING(@String,LEN(@String),1)<>@Separator
SET @String=@String+@Separator
SET @occu=(DATALENGTH(REPLACE(@String,@Separator,@Separator+'#'))-DATALENGTH(@String))/DATALENGTH(@Separator)
SET @tempVal=@String
WHILE @Counter<=@occu
BEGIN
SET @Counter=@Counter+1
IF LEN(SUBSTRING(@tempVal,1,CHARINDEX(@Separator,@tempVal)-1))>0
INSERT @strTable
( strVal )
VALUES (SUBSTRING(@tempVal,1,CHARINDEX(@Separator,@tempVal)-1))
SET @tempVal=SUBSTRING(@tempVal,CHARINDEX(@Separator,@tempVal)+1,4000)
IF LEN(@tempVal)=0
BREAK
END
RETURN
END
(
@String NVARCHAR(4000),
@Separator NVARCHAR(10)
)
RETURNS @strTable TABLE (strVal NVarchar(4000))
BEGIN
DECLARE @occu INT,
@tempVal NVARCHAR(4000),
@Counter INT
SET @Counter=0
IF SUBSTRING(@String,LEN(@String),1)<>@Separator
SET @String=@String+@Separator
SET @occu=(DATALENGTH(REPLACE(@String,@Separator,@Separator+'#'))-DATALENGTH(@String))/DATALENGTH(@Separator)
SET @tempVal=@String
WHILE @Counter<=@occu
BEGIN
SET @Counter=@Counter+1
IF LEN(SUBSTRING(@tempVal,1,CHARINDEX(@Separator,@tempVal)-1))>0
INSERT @strTable
( strVal )
VALUES (SUBSTRING(@tempVal,1,CHARINDEX(@Separator,@tempVal)-1))
SET @tempVal=SUBSTRING(@tempVal,CHARINDEX(@Separator,@tempVal)+1,4000)
IF LEN(@tempVal)=0
BREAK
END
RETURN
END
本文介绍了一个用于SQL的自定义函数splitStr,该函数能够将一个包含特定分隔符的字符串拆分成多个部分,并存储在一个表格变量中。通过使用这个函数,可以轻松地处理复杂的字符串操作任务。
136

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



