As to analogy in solution 3, below solution provides a way to get values between a pair of
$$$
. Now you have to insert words into temporary table to be able to merge it into single comma separated column.
;WITH SignPairs AS
(
SELECT @myText AS InputText, CHARINDEX('$$$', @myText) AS Pair1,
CHARINDEX('$$$', @myText, CHARINDEX('$$$', @myText)+3) AS Pair2, 1 AS Occurence
WHERE CHARINDEX('$$$', @myText)>0 AND CHARINDEX('$$$', @myText, CHARINDEX('$$$', @myText)+3)>0
UNION ALL
SELECT InputText AS InputText, CHARINDEX('$$$', InputText, Pair2+3) AS Pair1,
CHARINDEX('$$$', InputText, CHARINDEX('$$$', InputText, Pair2+3)+3) AS Pair2, Occurence + 1 AS Occurence
FROM SignPairs
WHERE CHARINDEX('$$$', InputText, Pair2+3)>0 AND CHARINDEX('$$$', InputText, CHARINDEX('$$$', InputText, Pair2+3)+3)>0
)
SELECT InputText, Pair1, Pair2, Occurence, REPLACE(SUBSTRING(InputText,Pair1, Pair2 - Pair1), '$$$', '') AS Word
FROM SignPairs
Result:
InputText Pair1 Pair2 Occurence Word
Dear $$$First Name$$$ your organization is $$$Organization$$$ 6 19 1 First Name
Dear $$$First Name$$$ your organization is $$$Organization$$$ 44 59 2 Organization