This may be the solution you are looking for:
;WITH SourceDate(PK,MedicationsXML) AS ( SELECT PK ,CAST(N'<r><![CDATA[' + REPLACE(Medications, ',', ']]></r><r><![CDATA[') + ']]></r>' AS XML) FROM @Medications ) SELECT DISTINCT Medicament FROM SourceDate CROSS APPLY (SELECT DISTINCT RTRIM(LTRIM(Tbl.Col.value('.', 'nvarchar(250)'))) AS Medicament FROM MedicationsXML.nodes('//r') Tbl(Col)) AS List
And this is a complete working example (I add duplicate entries to show that it returns only a single value:
SET NOCOUNT ON GO DECLARE @Medications TABLE ( PK BIGINT PRIMARY KEY IDENTITY(1,1) ,Medications NVARCHAR(4000) ) INSERT INTO @Medications(Medications) VALUES ('NAPROXEN, neurontin, DOCUSATE, HYDROCODONE, BACLOFEN, advil') ,('celexa, lortab, lyrica, ambien, xanax ') ,('adipex') ,('opana, roxicodone') ,('adderall') ,('hydrocodone/apap') ,('NEXIUM, METOPROLOL, lipitor, VERAPAMIL, ASPIRIN, WARFARIN, ambien') ,('prozac') ,('flexeril') ,('soma, LITHIUM, MULTI-VITAMIN, fentanyl patch, percocet, PROPANOLOL, tegretol') ,('NAPROXEN, neurontin, DOCUSATE, HYDROCODONE, BACLOFEN, advil') ,('celexa, lortab, lyrica, ambien, xanax ') ,('adipex') ,('opana, roxicodone') ,('adderall') ,('hydrocodone/apap') ,('NEXIUM, METOPROLOL, lipitor, VERAPAMIL, ASPIRIN, WARFARIN, ambien') ,('prozac') ,('flexeril') ,('soma, LITHIUM, MULTI-VITAMIN, fentanyl patch, percocet, PROPANOLOL, tegretol') ;WITH SourceDate(PK,MedicationsXML) AS ( SELECT PK ,CAST(N'<r><![CDATA[' + REPLACE(Medications, ',', ']]></r><r><![CDATA[') + ']]></r>' AS XML) FROM @Medications ) SELECT DISTINCT Medicament FROM SourceDate CROSS APPLY (SELECT DISTINCT RTRIM(LTRIM(Tbl.Col.value('.', 'nvarchar(250)'))) AS Medicament FROM MedicationsXML.nodes('//r') Tbl(Col)) AS List SET NOCOUNT OFF GO
Feel free to ask any questions.