SQL (Structured Query Language), veritabanı yönetim sistemlerinde verileri yönetmek, sorgulamak ve işlemek için yaygın olarak kullanılan bir dildir. SQL fonksiyonl...
SQL Server'da E-posta Adresini Uyumlu Hale Getiren Fonksiyon
Projemizdeki kullanıcılara ait eposta adresi hatalı olabiliyor. Bu durumları yaşamamak için öncelikle kullanıcıdan eposta bilgisini alırken gerekli kontrolleri ve eposta uyumluluğunu kontrol ederek alıp kaydetmen en doğrusu olacaktır. Fakat mevcut sistemimizde hatalı mailler yer alabiliyor. Bu hatalar arasında Türkçe karakter içermesi, boş karakter içermesi, büyük harfli Türkçe karakter ve büyük harfler yer alıyor. Toplu eposta gönderimi sırasında bazı maillerin büyük harfli olduğu için eposta gönderimi sırasında hata aldım. Bunun yanında tabi Türkçe harf içeren epostalar da mevcuttu. Bu durumu veri tabanında çözmek için bir fonksiyon hazırladım.
Bu fonksiyon tek parametre almaktadır. Gönderilen eposta dolu olup olmadığını bakıyor. Eğer dolu ise @ işareti içerip içermediğine bakıyor aksi takdirde geçersiz bir mail olacak. Her iki durumu geçtikten sonra belirlemiş olduğum harf ve karakterler için REPLACE fonksiyonu ile ilgili değişiklikleri yaptım. Son olarak eposta adreslerini LOWER fonksiyonu ile harflerini küçülttüm.
SQL Fonksiyonu
CREATE FUNCTION dbo.LowerCaseEmailAddress (@EMAIL NVARCHAR(100))
RETURNS NVARCHAR(100)
AS
BEGIN
DECLARE @TempString NVARCHAR(100)
SET @TempString = @EMAIL
IF NULLIF(@TempString, '') IS NOT NULL
BEGIN
IF @TempString LIKE '%@%'
BEGIN
SET @TempString = REPLACE(@TempString, ' ', '')
SET @TempString = REPLACE(@TempString, 'Ü', 'u')
SET @TempString = REPLACE(@TempString, 'ü', 'u')
SET @TempString = REPLACE(@TempString, 'Ğ', 'g')
SET @TempString = REPLACE(@TempString, 'ğ', 'g')
SET @TempString = REPLACE(@TempString, 'Ç', 'c')
SET @TempString = REPLACE(@TempString, 'ç', 'c')
SET @TempString = REPLACE(@TempString, 'Ş', 's')
SET @TempString = REPLACE(@TempString, 'ş', 's')
SET @TempString = REPLACE(@TempString, 'İ', 'i')
SET @TempString = REPLACE(@TempString, 'I', 'i')
SET @TempString = REPLACE(@TempString, 'ı', 'i')
SET @TempString = REPLACE(@TempString, 'Ö', 'o')
SET @TempString = REPLACE(@TempString, 'ö', 'o')
SET @TempString = LOWER(@TempString)
END
ELSE
BEGIN
SET @TempString = 'Invalid Email Address';
END
END
ELSE
BEGIN
SET @TempString = 'Email Address Empty';
END
RETURN @TempString
END
GO
Farklı Eposta Formatlarına Ait Sonuçlar
Görseldeki epostaları incelediğiniz boş eposta, geçersiz eposta, boş karakter içerme, Türkçe karakterli eposta gibi farklı durumlarda örnekleri ve çıktılarını görebilirsiniz.
Eğer fonksiyonu silmek isterseniz aşağıdaki kodu kullanabilirsiniz:
DROP FUNCTION dbo.LowerCaseEmailAddress
Fonksiyona ek olarak iyileştirme yapılabilecek bir şey varsa belirtmekten çekinmeyin!
Umarım faydalı olmuştur. İyi çalışmalar dilerim.
Yorum yapabilmek için giriş yapmalısınız. Giriş yapmak için tıklayınız.