Create Table DBO.Email_Checker(KeyField Int,Email_Address Varchar(75))
Insert Into DBO.Email_CheckerValues (1,'Freddy strange has an email address of freddy@gogo.com');Insert Into DBO.Email_CheckerValues (2,'Marge.flint@dhlink.co.uk / johnflint@gmail.com');Insert Into DBO.Email_CheckerValues (3,'Email: User1@retail.wholesale.co.uk & User1@Google');Insert Into DBO.Email_CheckerValues (4,'Jerremyblack@gmail.comsnowwhite@ubisux.com');Insert Into DBO.Email_CheckerValues (5,'Email USER2@giraffe,gaff');Insert Into DBO.Email_CheckerValues (6,'LinkLink@hydrager.eu – manklink@hydrager.eu');Insert Into DBO.Email_CheckerValues (7,'Johns sharp jsharp@fritty.co.jp');Insert Into DBO.Email_CheckerValues (8,'lankyman@gloopy.gov.gb');Insert Into DBO.Email_CheckerValues (9,'Mobile: 09120923123 Email hankerchief@dragon.boat.com');
select KeyField, Ltrim(Rtrim(Lower(Email_Address))) AS Emailfrom DBO.Email_CheckerWhere Lower(Email_Address) LIKE '%_@__%.__%'AND LEN(Email_Address) - LEN(REPLACE(Email_Address,'@','')) =1
--Drop Table DBO.Email_Checker
select reverse(substring(reverse(Email_Address),0,charindex(' ',reverse(Email_Address))))from DBO.Email_Checker
--this will split everything into segments first;with cte as( select * from email_Checker cross apply dbo.DelimitedSplit8K(Email_address, ' ')), ParseEmail as( select *, dbo.IsValidEmail(Item) as IsValidEmail from cte)select * from ParseEmailwhere IsValidEmail = 1