sql:

 

CREATE FUNCTION [dbo].[Split] (
    @sText      NVARCHAR(Max),
    @sDelim     CHAR(1)
)


RETURNS @retArray TABLE (
    value   VARCHAR(100)
)
AS
BEGIN
DECLARE 
@posStart BIGINT,
@posNext BIGINT,
@valLen BIGINT,
@sValue NVARCHAR(100);


IF @sDelim IS NULL 
BEGIN
IF LEN(@sText)>100 SET @sText = SUBSTRING(@sText, 1, 100)

INSERT @retArray (value)
VALUES (@sText);
END
ELSE
BEGIN
SET @posStart = 1;


WHILE @posStart <= LEN(@sText)
BEGIN
SET @posNext = CHARINDEX(@sDelim, @sText, @posStart);


IF @posNext <= 0 
SET @valLen = LEN(@sText) - @posStart + 1;
ELSE
SET @valLen = @posNext - @posStart;


SET @sValue = SUBSTRING(@sText, @posStart, @valLen);
SET @posStart = @posStart + @valLen + 1;


IF LEN(@sValue) > 0
BEGIN
IF LEN(@sValue)>100 SET @sValue = SUBSTRING(@sValue, 1, 100)

INSERT @retArray (value)
VALUES (@sValue);
END
END
END
RETURN
END

 

 

测试:

 

DECLARE @DateString varchar(1000)
SET @DateString = '星期四,星期五'
select * from dbo.Split(@DateString,',')

 

结果:

sql 拆分字符串 Split_Max

 

sql 拆分字符串 Split_sql_02