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)