How about this?
CREATE FUNCTION dbo.SplitString ( @string varchar(4000))
RETURNS @Result TABLE(SpiltedString VARCHAR(100))
AS
BEGIN
DECLARE @xml XML
SELECT @xml = CAST('<VALUE>'+ REPLACE(@string,',','</VALUE><VALUE>')+ '</VALUE>' AS XML)
INSERT INTO @Result
SELECT t.value('.', 'VARCHAR(100)') AS inVal
FROM @xml.nodes('/VALUE') AS x(t)
RETURN
END
GO
Create table #MYTEMP
(Id int ,
value nvarchar(100),
name varchar(50))
insert into #MYTEMP VALUES(1,'B,C,D','XYZ')
SELECT ID, fnResult.SpiltedString, name
FROM #MYTEMP
CROSS APPLY DBO.SplitString(value) as fnResult
DROP FUNCTION dbo.SplitString
DROP TABLE #MYTEMP