- Convert the string into rows using the delimiter
;
- From the converted rows remove the unwanted Emails.
- After removing convert the rows into single string delimited with
;
CREATE TABLE #delemail (email VARCHAR(5000))
INSERT INTO #delemail VALUES ( 'john@daddsa.com; johnsemail@aadsss.com; johnmainemail@z.com; johnthrowemail@y.com')
DECLARE @email VARCHAR(500)=''
SELECT @email += ';' + emailrow
FROM (SELECT Rtrim(Ltrim(Split.a.value('.', 'VARCHAR(100)'))) emailrow
FROM (SELECT Cast ('<M>' + Replace(email, ';', '</M><M>') + '</M>' AS XML) AS Data
FROM #delemail) AS A
CROSS APPLY Data.nodes ('/M') AS Split(a)) OU
WHERE emailrow NOT LIKE '%@w.com%'
AND emailrow NOT LIKE '@x.com%'
AND emailrow NOT LIKE '%@y.com%'
AND emailrow NOT LIKE '%@z.com%'
SELECT RIGHT(@email, Len(@email) - 1) As OrgEmail
OrgEmail
john@daddsa.com;johnsemail@aadsss.com
The above query can be convert to a Scalar Function
.
CREATE FUNCTION Removefakmail (@email VARCHAR(5000))
returns VARCHAR(5000)
AS
BEGIN
DECLARE @newemails VARCHAR(5000)=''
SELECT @newemails += emailrow + '; '
FROM (SELECT Rtrim(Ltrim(Split.a.value('.', 'VARCHAR(100)'))) emailrow
FROM (SELECT Cast ('<M>' + Replace(@email, ';', '</M><M>') + '</M>' AS XML) AS Data) AS A
CROSS APPLY Data.nodes ('/M') AS Split(a)) OU
WHERE emailrow NOT LIKE '%@w.com%'
AND emailrow NOT LIKE '@x.com%'
AND emailrow NOT LIKE '%@y.com%'
AND emailrow NOT LIKE '%@z.com%'
SELECT @newemails = LEFT(@newemails, Len(@newemails) - 1)
RETURN @newemails
END
SELECT dbo.Removefakmail(email)
FROM #delemail
OrgEmail
john@daddsa.com;johnsemail@aadsss.com