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_SPLIT
fonksiyonunu 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_SPLIT
sonucu elde edilen tabloyuFIRMA
tablosu ileLEFT JOIN
işlemi kullanarak birleştireceğiz. Bu sayede, sayı kümesindeki her bir değerinodasicil
sütununda olup olmadığını kontrol edeceğiz. - Eksik Verileri Seçmek:
LEFT JOIN
sonucundaodasicil
sü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:
Sayilar
CTE’sindeki her biroda_sicil_no
değeri,FIRMA
tablosundakiodasicil
sütunu ile eşleştirilir.LEFT JOIN
kullanıldığı içinodasicil
sütununda bulunmayanoda_sicil_no
değerleriNULL
olarak döner.WHERE
koşulu ileNULL
olanodasicil
değerlerini filtreleriz. Bu daFIRMA
tablosunda bulunmayan tümoda_sicil_no
değ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_SPLIT
fonksiyonunu kullanarak verileri tablo formatına getirdik. - LEFT JOIN Kullanımı:
LEFT JOIN
ile verilerimizi karşılaştırdık veFIRMA
tablosunda olmayan değerleri belirledik. - Eksik Verileri Raporlama:
WHERE
koşulu ileNULL
olan 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.