Herkese merhaba,
Bu yazıda SQL Server’da mail adresi kontrol eden fonksiyon hakkında bilgi vereceğim.
SQL Server’da bazı durumlarda mail adresini kontrol etmek isteyebilirsiniz.
Aşağıdaki fonksiyon yardımıyla bu işlemi rahatlıkla yapabilirsiniz.
--Fonksiyonu oluşturmak
CREATE FUNCTION EmailKontrolEdenFonksiyon
(
@MailAdresi VARCHAR(500)
)
RETURNS BIT
AS
BEGIN
DECLARE @Sonuc BIT;
SET @MailAdresi = LTRIM(RTRIM(@MailAdresi));
SELECT @Sonuc
= CASE
WHEN CHARINDEX(' ', LTRIM(RTRIM(@MailAdresi))) = 0
AND LEFT(LTRIM(@MailAdresi), 1) <> '@'
AND RIGHT(RTRIM(@MailAdresi), 1) <> '.'
AND LEFT(LTRIM(@MailAdresi), 1) <> '-'
AND CHARINDEX('.', @MailAdresi, CHARINDEX('@', @MailAdresi)) - CHARINDEX('@', @MailAdresi) > 2
AND LEN(LTRIM(RTRIM(@MailAdresi))) - LEN(REPLACE(LTRIM(RTRIM(@MailAdresi)), '@', '')) = 1
AND CHARINDEX('.', REVERSE(LTRIM(RTRIM(@MailAdresi)))) >= 3
AND
(
CHARINDEX('.@', @MailAdresi) = 0
AND CHARINDEX('..', @MailAdresi) = 0
)
AND
(
CHARINDEX('-@', @MailAdresi) = 0
AND CHARINDEX('..', @MailAdresi) = 0
)
AND
(
CHARINDEX('_@', @MailAdresi) = 0
AND CHARINDEX('..', @MailAdresi) = 0
)
AND ISNUMERIC(SUBSTRING(@MailAdresi, 1, 1)) = 0
AND CHARINDEX(',', @MailAdresi) = 0
AND CHARINDEX('!', @MailAdresi) = 0
AND CHARINDEX('-.', @MailAdresi) = 0
AND CHARINDEX('%', @MailAdresi) = 0
AND CHARINDEX('#', @MailAdresi) = 0
AND CHARINDEX('$', @MailAdresi) = 0
AND CHARINDEX('&', @MailAdresi) = 0
AND CHARINDEX('^', @MailAdresi) = 0
AND CHARINDEX('''', @MailAdresi) = 0
AND CHARINDEX('\', @MailAdresi) = 0
AND CHARINDEX('/', @MailAdresi) = 0
AND CHARINDEX('*', @MailAdresi) = 0
AND CHARINDEX('+', @MailAdresi) = 0
AND CHARINDEX('(', @MailAdresi) = 0
AND CHARINDEX(')', @MailAdresi) = 0
AND CHARINDEX('[', @MailAdresi) = 0
AND CHARINDEX(']', @MailAdresi) = 0
AND CHARINDEX('{', @MailAdresi) = 0
AND CHARINDEX('}', @MailAdresi) = 0
AND CHARINDEX('?', @MailAdresi) = 0
AND CHARINDEX('<', @MailAdresi) = 0 AND CHARINDEX('>', @MailAdresi) = 0
AND CHARINDEX('=', @MailAdresi) = 0
AND CHARINDEX('~', @MailAdresi) = 0
AND CHARINDEX('`', @MailAdresi) = 0
AND CHARINDEX('.', SUBSTRING(@MailAdresi, CHARINDEX('@', @MailAdresi) + 1, 2)) = 0
AND CHARINDEX('.', SUBSTRING(@MailAdresi, CHARINDEX('@', @MailAdresi) - 1, 2)) = 0
AND LEN(SUBSTRING(@MailAdresi, 0, CHARINDEX('@', @MailAdresi))) > 1
AND CHARINDEX('.', REVERSE(@MailAdresi)) > 2
AND CHARINDEX('.', REVERSE(@MailAdresi)) < 5 THEN
1
ELSE
0
END;
RETURN @Sonuc;
END;
GO
--Fonksiyonu kullanmak
SELECT dbo.EmailKontrolEdenFonksiyon('deneme@deneme.com');
Fonksiyonu oluşturup çalıştırdığınızda aşağıdaki gibi bir sonuç göreceksiniz.

Görüldüğü üzere mail adresi kontrol edilmiş oldu. 1 geçerli bir mail adresi olduğunu 0 ise geçerli olmayan bir mail adresi olduğunu göstermektedir.
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.
