• Can someone explain me how the script given below is working ?

    Especially the CASE Statement

    DECLARE @Text NVARCHAR(2000)

    DECLARE @StringDelimiter CHAR(1)

    SELECT @Text = 'This T-sql will split senteneces into rows.'+

    'How many rows will be returned?.'+

    'M.a.y.b.e..n.n.o.e.?',

    @StringDelimiter = '.';

    With Tally (Number)

    AS

    (

    SELECT ROW_NUMBER() OVER( ORDER BY (SELECT NULL) )AS Number

    UNION ALL

    SELECT Number + 1 AS Number

    FROM Tally WHERE Number <= LEN(@Text)

    )

    SELECT CASE WHEN RIGHT(LEFT(@Text,Number),

    CASE WHEN CHARINDEX(@StringDelimiter,REVERSE(LEFT(@Text,Number -1)),0) > 0

    THEN CHARINDEX(@StringDelimiter,REVERSE(LEFT(@Text,Number -1)),0) - 1

    ELSE CHARINDEX(@StringDelimiter,Reverse(LEFT(@Text,Number -1)),0) END) = ''

    AND

    CHARINDEX(@StringDelimiter,REVERSE(LEFT(@Text,Number -1))) = 0

    THEN LEFT(@Text,Number -1)

    ELSE RIGHT(LEFT(@Text,Number - 1),

    CASE WHEN CHARINDEX(@StringDelimiter,Reverse(LEFT(@Text,Number -1)),0) >0

    THEN CHARINDEX(@StringDelimiter,REVERSE(LEFT(@Text,Number -1)),0) -1

    ELSE CHARINDEX(@StringDelimiter,REVERSE(LEFT(@Text,Number -1)),0) END)

    END AS SPLIT FROM TALLY

    WHERE(NCHAR(UNICODE(SUBSTRING(@Text,Number,1))) = @StringDelimiter

    ORNumber - 1 = LEN(@Text))

    OPTION (MAXRECURSION 32767)