SQL Server’da Toplu Veri Güncelleme: Hatalı E-posta Adreslerini Güvenle Düzeltme

SQL Server’da Toplu Veri Güncelleme: Hatalı E-posta Adreslerini Güvenle Düzeltme

SQL Server’da Toplu Veri Güncelleme: Hatalı E-posta Adreslerini Güvenle Düzeltme

Posted on Eylül 23, 2026 by Şaban ÇİÇEK
SQL Server’da Toplu Veri Güncelleme: Hatalı E-posta Adreslerini Güvenle Düzeltme

SQL Server’da Toplu Veri Güncelleme: Hatalı E-posta Adreslerini Güvenle Düzeltme

Bir veritabanındaki e-posta adreslerinin bir kısmının .com yerine .comm ile bittiğini veya alan adının yanlış yazıldığını düşünün. Her kayıt farklı bir kullanıcıya ait olsa da ortak hatayı SQL Server’da tek sorguyla düzeltebiliriz. Buradaki önemli adım, güncellemeden önce hangi satırların etkileneceğini ve yeni değerlerini görmektir.

Örneklerde dbo.Musteriler tablosu ve Eposta sütunu kullanılıyor. Bunları kendi tablo ve sütun adlarınıza uyarlayın.

1. Sonunda fazladan harf bulunan adresler: .comm → .com

Örneğin ali@ornek.comm adresini ali@ornek.com yapmak istiyoruz. Kullanıcı adları farklı olsa da tüm hatalı kayıtlar aynı alan adıyla bitiyor.

Önce eski ve yeni değerleri karşılaştırın

SELECT
    Eposta AS EskiEposta,
    LEFT(Eposta, LEN(Eposta) - 1) AS YeniEposta
FROM dbo.Musteriler
WHERE Eposta LIKE '%@ornek.comm';

LEFT(Eposta, LEN(Eposta) - 1) metnin son karakterini kaldırır. WHERE ise yalnızca ilgili alan adıyla biten kayıtları seçer. Ön izlemede beklenmeyen bir adres varsa güncellemeye geçmeden koşulu düzeltin.

Güncellemeyi başlatın

BEGIN TRAN;

UPDATE dbo.Musteriler
SET Eposta = LEFT(Eposta, LEN(Eposta) - 1)
WHERE Eposta LIKE '%@ornek.comm';

SELECT @@ROWCOUNT AS GuncellenenKayitSayisi;

@@ROWCOUNT, hemen öncesindeki UPDATE komutunun etkilediği satır sayısını gösterir. Bu değeri okumadan araya başka bir SQL komutu koymayın.

2. Alan adı yanlış yazılmışsa: ornek.com → ordek.com

Bu örnekte son harfi silmek işe yaramaz: ayse@ornek.com adresinin ayse@ordek.com olması gerekiyor. Hatalı alan adını doğru olanla değiştiririz.

Önce sonucu görün

SELECT
    Eposta AS EskiEposta,
    REPLACE(Eposta, '@ornek.com', '@ordek.com') AS YeniEposta
FROM dbo.Musteriler
WHERE Eposta LIKE '%@ornek.com';

Ardından güncelleyin

BEGIN TRAN;

UPDATE dbo.Musteriler
SET Eposta = REPLACE(Eposta, '@ornek.com', '@ordek.com')
WHERE Eposta LIKE '%@ornek.com';

SELECT @@ROWCOUNT AS GuncellenenKayitSayisi;

REPLACE yalnızca belirtilen metni değiştirir. @ işaretini de aranan metne eklemek, kullanıcı adındaki benzer kelimelere dokunmamak açısından yararlıdır. İkinci örneği birincinin açık transaction’ı varken çalıştırmayın; her düzeltmeyi ayrı bir işlem olarak tamamlayın.

3. Sonucu kontrol edin ve işlemi tamamlayın

Seçtiğiniz güncellemeden sonra, aynı SQL Server bağlantısında sonuçları kontrol edin. Örneğin ikinci senaryo için:

SELECT Eposta
FROM dbo.Musteriler
WHERE Eposta LIKE '%@ordek.com';

Sayı ve adresler doğruysa aynı sorgu penceresinde işlemi kalıcılaştırın:

COMMIT TRAN;

Bir hata gördüyseniz bunun yerine değişiklikleri geri alın:

ROLLBACK TRAN;
Dikkat: COMMIT TRAN ve ROLLBACK TRAN alternatif komutlardır; ikisini art arda çalıştırmayın. Transaction açıkken ilgili satırlar üzerinde kilitler tutulabilir. Kontrolünüzü tamamlar tamamlamaz işlemi sonuçlandırın. Ayrıca işlemden önce uygun bir yedeğinizin bulunduğundan emin olun.

4. Hatalı kayıt kaldı mı?

İşlem bittikten sonra kendi senaryonuza uygun sorguyla kalan kayıtları sayın:

-- Fazladan m harfi bulunan adresler
SELECT COUNT(*) AS KalanHataliKayit
FROM dbo.Musteriler
WHERE Eposta LIKE '%@ornek.comm';

-- Yanlış alan adıyla kalan adresler
SELECT COUNT(*) AS KalanHataliKayit
FROM dbo.Musteriler
WHERE Eposta LIKE '%@ornek.com';

İlgili sorgu 0 döndürüyorsa hedeflediğiniz biçimde hatalı kayıt kalmamıştır. İkinci sorguyu yalnızca @ornek.com adreslerinin tamamının gerçekten yanlış olduğu senaryoda kullanın.

Uygularken dikkat edilecekler

  • Güncellemeden önce SELECT ile eski ve yeni değerleri yan yana görün.
  • WHERE koşulunu sadece doğruladığınız kayıtları kapsayacak kadar dar tutun.
  • @@ROWCOUNT değerini UPDATE işleminden hemen sonra okuyun.
  • LEN sondaki boşlukları saymaz. Verinizde son boşluklar olabileceğini düşünüyorsanız birinci örneği önce bu kayıtlar üzerinde ayrıca test edin.

Toplu veri düzeltmenin akışı şudur: Önce gör → güncelle → sonucu kontrol et → işlemi tamamla.

Kaynaklar


Şaban ÇİÇEK
Bilgi Teknolojileri

95 görüntülenme • 0 Yorum • Son Güncelleme: Eylül 23, 2026
Yorumlar 0
Yorum Yap

Henüz yorum yok. İlk yorumu siz yapın!