This is my code:
CREATE FUNCTION [dbo].[fnAppEmailCheck]
(@email VARCHAR(255))
--Returns true if the string is a valid email address.
RETURNS bit
AS
BEGIN
DECLARE @valid bit
IF @email IS NOT NULL
SET @email = LOWER(@email)
SET @valid = 0
IF @email LIKE '[a-z,0-9,_,+,-]%@[a-z,0-9,-]%.[a-z][a-z]%'
AND LEN(@email) = LEN(dbo.fnAppStripNonEmail(@email))
AND @email NOT like '%@%@%'
AND CHARINDEX('.@',@email) = 0
AND PATINDEX('%[a-zA-Z]%', @email) <> 0
AND CHARINDEX('..',@email) = 0
AND CHARINDEX(',',@email) = 0
AND RIGHT(@email,1) between 'a' AND 'z'
SET @valid = 1
RETURN @valid
END
My fnAppStripNonEmail function :
CREATE FUNCTION [dbo].[fnAppStripNonEmail]
(@Temp VarChar(1000))
RETURNS VarChar(1000)
AS
BEGIN
DECLARE @KeepValues AS varchar(50)
SET @KeepValues = '%[^a-z,^0-9,@,.,-]%'
WHILE PATINDEX(@KeepValues, @Temp) > 0
SET @Temp = STUFF(@Temp, PATINDEX(@KeepValues, @Temp), 1, '')
RETURN @Temp
END
In the screenshot, every format works fine as per my requirements but it flags 22@gmail.com as 1. I want my email ID to have at least one alphabet.