Without any external function-- Prepare sample dataDECLARE @var VARCHAR(8000)SET @var = 'SavedFilterName=STAFF_PCOM%2526%26FilterEntryVars_1=EscapePercent=1%2526SavedFilterName=VIP_CP%'-- Show the expected outputSELECT STUFF(( SELECT DISTINCT TOP 100 PERCENT ',' + SUBSTRING(@var, Start, Finish - Start) FROM ( SELECT 16 + First AS Start, CHARINDEX('%', @var, First + 16) AS Finish FROM ( SELECT DISTINCT CHARINDEX('SavedFilterName=', @var, 16 * Number + 1) AS First FROM master..spt_values WHERE Type = 'p' ) AS d WHERE First > 0 ) AS q WHERE Finish > 0 ORDER BY ',' + SUBSTRING(@var, Start, Finish - Start) FOR XML PATH('')), 1, 1, '') AS theValues
E 12°55'05.25"N 56°04'39.16"