Try this:
DECLARE @tmp TABLE (SongsName VARCHAR(300), PlstID INT)
INSERT INTO @tmp (SongsName, PlstID)
VALUES('a,b,c,d,e', 166)
INSERT INTO @tmp (SongsName, PlstID)
VALUES('a,d,e,f,g', 165)
;WITH CTESongs AS
(
SELECT PlstID, LEFT(SongsName, CHARINDEX(',',SongsName)-1) AS Song, RIGHT(SongsName, LEN(SongsName) - CHARINDEX(',',SongsName)) AS Remainder
FROM @tmp
WHERE CHARINDEX(',',SongsName)>0
UNION ALL
SELECT PlstID, LEFT(Remainder, CHARINDEX(',',Remainder)-1) AS Song, RIGHT(Remainder, LEN(Remainder) - CHARINDEX(',',Remainder)) AS Remainder
FROM CTESongs
WHERE CHARINDEX(',',Remainder)>0
UNION ALL
SELECT PlstID, Remainder AS Song, NULL AS Remainder
FROM CTESongs
WHERE CHARINDEX(',',Remainder)=0
)
SELECT *
FROM CTESongs
Have a look here:
WITH Common table expression[
^]