• Another variant

    create FUNCTION [dbo].[ft_ConvertStrToTable](

    @STR varchar(8000), -- ?????? ? ?????????????

    @sDiv char(1) -- ?????? ???????????

    )

    RETURNS

    @ConvertStrToTable TABLE

    (

    sValue varchar(255)

    )

    AS

    BEGIN

    Declare @Pos int, @PosPrev int;

    set @STR = @STR+@sDiv;

    set @Pos = 1;

    set @PosPrev = @Pos;

    while 1=1

    begin

    set @Pos = CHARINDEX(@sDiv, @STR, @PosPrev);

    if @Pos = 0

    break;

    insert into @ConvertStrToTable (sValue)

    values(substring(@Str, @PosPrev, @Pos-@PosPrev));

    set @PosPrev = @Pos+1;

    end;

    RETURN

    END