功能 : 将字符串分割成多个字符串返回(表)
参数说明 : @STR 需要分割的字符串
@CutChar 分割字符
例如 : select * from dbo.fn_GetCutStrTable('123/456/789','/')
返回如下结果:
item
-----
123
456
789
Create FUNCTION fn_GetCutStrTable(@STR VARCHAR(8000),@CutChar VARCHAR(10))
RETURNS @STRINGTABLE TABLE (ITEM VARCHAR(8000)) --返回字符列表
AS
BEGIN
DECLARE @COUNT INT --出错处理
SET @COUNT=0
--SET @CutChar=REPLACE(@CutChar,' ','') --去除空格
DECLARE @CutLen INT --分割符长度
Set @CutLen=Len(@CutChar)
IF RIGHT(@STR,@CutLen)<>@CutChar SET @STR=@STR+@CutChar --规范化字符串
SET @STR=REPLACE(@STR,@CutChar+@CutChar,@CutChar) --规范化字符串
WHILE @STR<>'' AND @COUNT<=4000
BEGIN
INSERT @STRINGTABLE
SELECT SUBSTRING(@STR,1,CHARINDEX(@CutChar,@STR)-1)
SET @STR=SUBSTRING(@STR,CHARINDEX(@CutChar,@STR)+@CutLen,Len(@Str))
SET @COUNT=@COUNT+1
END
IF @COUNT=4000 DELETE FROM @STRINGTABLE --出错处理(防止死循环)
RETURN
END
GO