SQL Server ile Virgülle Ayrılmış Sayı Kümesindeki Verileri Araştırma ve Eksik Kayıtları Raporlama
Giriş
SQL Server, veri tabanındaki karmaşık sorgular ve veri analizleri için güçlü bir platformdur. Bazen, dış bir kaynaktan gelen virgülle ayrılmış bir sayı kümesi gibi verileri, SQL Server’daki mevcut bir tablonun belirli bir sütununda aramak ve bulunmayan değerleri tespit etmek gerekebilir. Bu yazıda, virgülle ayrılmış bir sayı kümesini SQL Server’da bir tablo sütunu ile nasıl karşılaştırabileceğimizi ve bu sütunda bulunmayan verileri nasıl raporlayabileceğimizi adım adım ele alacağız.
Problem Tanımı
Elimizde virgülle ayrılmış bir sayı kümesi olduğunu varsayalım:
1,2,3,4,5,6,7,8,9,10
Bu sayı kümesindeki değerlerin, SQL Server’da FIRMA adlı tablonun odasicil sütununda bulunup bulunmadığını kontrol etmek istiyoruz. Amacımız, bu sayılardan odasicil sütununda bulunmayanları tespit etmek ve raporlamak.
Çözüm Adımları
Bu problemi çözmek için şu adımları izleyeceğiz:
- Virgülle Ayrılmış Verileri Tabloya Dönüştürmek: SQL Server’da
STRING_SPLITfonksiyonunu kullanarak virgülle ayrılmış verileri tabloya dönüştüreceğiz. Bu fonksiyon, her bir sayıyı ayrı bir satır olarak bir geçici tabloya (CTE) eklememizi sağlar. - LEFT JOIN Kullanarak Kayıt Karşılaştırması Yapmak:
STRING_SPLITsonucu elde edilen tabloyuFIRMAtablosu ileLEFT JOINişlemi kullanarak birleştireceğiz. Bu sayede, sayı kümesindeki her bir değerinodasicilsütununda olup olmadığını kontrol edeceğiz. - Eksik Verileri Seçmek:
LEFT JOINsonucundaodasicilsütununda olmayan (NULL) verileri filtreleyerek raporlayacağız.
Adım Adım Uygulama
Adım 1: Virgülle Ayrılmış Sayı Kümesini Tanımlamak
Öncelikle, virgülle ayrılmış sayıları bir SQL değişkenine kaydediyoruz. Bu sayede STRING_SPLIT fonksiyonunu kullanarak veriyi parçalayabiliriz.
WITH Sayilar AS (
SELECT TRIM(value) AS oda_sicil_no
FROM STRING_SPLIT(@Sayilar, ',')
)
Bu CTE (Common Table Expression), virgülle ayrılmış her bir değeri oda_sicil_no sütununda ayrı bir satır olarak içeren geçici bir tablo oluşturur.
Adım 3: LEFT JOIN ile Karşılaştırma ve Eksik Kayıtların SeçimiFIRMA tablosundaki odasicil sütunu ile Sayilar CTE’sini LEFT JOIN kullanarak birleştiriyoruz. LEFT JOIN, sağdaki tablodan (FIRMA) karşılığı olmayan satırları da seçmemize olanak tanır.
SELECT s.oda_sicil_no
FROM Sayilar s
LEFT JOIN FIRMA f ON s.oda_sicil_no = f.odasicil
WHERE f.odasicil IS NULL;
Bu sorgu şu işlemleri gerçekleştirir:
SayilarCTE’sindeki her biroda_sicil_nodeğeri,FIRMAtablosundakiodasicilsütunu ile eşleştirilir.LEFT JOINkullanıldığı içinodasicilsütununda bulunmayanoda_sicil_nodeğerleriNULLolarak döner.WHEREkoşulu ileNULLolanodasicildeğerlerini filtreleriz. Bu daFIRMAtablosunda bulunmayan tümoda_sicil_nodeğerlerini raporlamamızı sağlar.
Sonuç
Yukarıdaki adımları tamamladığımızda, SQL Server’da virgülle ayrılmış sayı kümesindeki verilerin FIRMA tablosunun odasicil sütununda olup olmadığını kontrol etmiş ve bulunmayan değerleri raporlamış oluruz. Bu teknik, dışarıdan gelen veri kümelerini mevcut veri tabanındaki kayıtlarla karşılaştırmak ve eksik verileri tespit etmek için oldukça kullanışlıdır.
Özet
- Virgülle Ayrılmış Verileri Tabloya Dönüştürme:
STRING_SPLITfonksiyonunu kullanarak verileri tablo formatına getirdik. - LEFT JOIN Kullanımı:
LEFT JOINile verilerimizi karşılaştırdık veFIRMAtablosunda olmayan değerleri belirledik. - Eksik Verileri Raporlama:
WHEREkoşulu ileNULLolan değerleri filtreleyerek, eksik olan kayıtların raporunu aldık.
Bu yöntem, özellikle dış veri kaynakları ile çalışırken ve büyük veri kümelerini mevcut verilerle eşleştirirken büyük kolaylık sağlar. SQL Server’da veri analizi yaparken bu tür teknikleri kullanmak, veri kalitesini ve analiz sürecini önemli ölçüde artırır.
![]()
