;WITH Notes (Note) AS ( SELECT 'aaa abc@wondwerks.com bbb' UNION ALL SELECT 'dwain.c@sqlservercentral.com' UNION ALL SELECT 'dwain.c@' UNION ALL SELECT '@sqlservercentral.com' UNION ALL SELECT 'aaa @sqlservercentral.com' UNION ALL SELECT '@')SELECT emailFROM NotesCROSS APPLY (SELECT CHARINDEX('@', Note)) a (PosOfAt)CROSS APPLY ( SELECT SUBSTRING(Note, 1, PosOfAt - 1) ,SUBSTRING(Note, PosOfAt + 1, LEN(Note))) b(Leading, Trailing)CROSS APPLY ( SELECT REVERSE(LEFT(REVERSE(Leading), CHARINDEX(' ', REVERSE(Leading) + ' ') - 1)) + '@' + LEFT(Trailing, CHARINDEX(' ', Trailing + ' ') - 1)) c(email)WHERE LEFT(email, 1) <> '@' AND RIGHT(email, 1) <> '@'
;WITH Notes (Note) AS ( SELECT 'aaa abc@wondwerks.com bbb' UNION ALL SELECT 'dwain.c@sqlservercentral.com' UNION ALL SELECT 'dwain.c@' UNION ALL SELECT '@sqlservercentral.com' UNION ALL SELECT 'aaa @sqlservercentral.com' UNION ALL SELECT '@')SELECT NoteFROM NotesWHERE Note LIKE '%[0-9A-Za-z.][@][0-9A-Za-z.]%'
SUBSTRING(SUBSTRING(n.Note,1,CHARINDEX(' ',n.Note,CHARINDEX('@', n.Note))-1),CHARINDEX('@', n.Note) - CHARINDEX(' ',REVERSE(SUBSTRING(n.Note,1,CHARINDEX('@', n.Note)-1))) + 1, 255)