Sql Server COALESCE, Sql Server için uzun zamandır herhangi bir makale yazmadığımı farkettim, Bu makalede açıkçası benim de yeni tanıştığım COALESCE ifadesini ele alacağız ve çok işinize yarayacağını düşündüğüm bir konu olacağını düşünüyorum.
Sql Server COALESCE Keyword/İfadesi Nedir, Nasıl Kullanılır?
Çoğu zaman sql cümlelerimiz içerisinde null kontrolleri yaparak akışı farklı alanlardaki değerleri elde etmek için kullanırız işte tam olarak burada birden fazla alanın null kontrolünü yapıp her null kontrolü şartı sağlandıkça değeri elde edilecek bir sonraki alana otomatik yönlendirmesi sağlanacak ve böylelikle isnull içerisinde isnull karmaşasından kurtulabilirsiniz örnek bir senaryo üzerinden ilerlersek eğer isnull ve coalesce arasındaki farkı daha iyi anlamamıza yardımcı olabilir.
Şimdi şöyle bir senaryo düşünelim okul veritabanında öğrencilerin bilgilerinin tutulduğu bir tablo olsun ve bu tablo içerisinde anne, baba, büyükanne ve büyükbaba bilgileri için 4 tane kolonda ayrı ayrı isimlerinin saklandığını düşünelim ve bazı öğrencilerde anne adı var bazılarında baba adı veya bazılarında sadece büyükbaba-büyükanne adlarının dolu olduğunu varsayalım bu durumda hazırlayacağımız sql sorgusunda öğrenci adı yanında ebeveyn adı dönmemiz gerekiyor şimdi bu senaryoyu hem isnull hemde COALESCE yöntemi ile deneyelim.
Örnek olarak kullanabileceğiniz tablo modeli şu şekildedir.
Tablo Modeli
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | CREATE TABLE Student ( [Name] NVARCHAR(50), [ParentMotherName] NVARCHAR(50), [ParentFatherName] NVARCHAR(50), [ParentGrandPaName] NVARCHAR(50), [ParentGrandMaName] NVARCHAR(50) ); INSERT INTO Student ([Name], [ParentMotherName], [ParentFatherName], [ParentGrandMaName], [ParentGrandPaName]) VALUES ('Hakan','Hande', 'Asım', NULL, NULL), ('Ceyda', NULL, 'Osman', NULL, NULL), ('Serkan', NULL, NULL, 'Ferit', NULL), ('Serkan', NULL, NULL, 'Ekrem', NULL); |
Ebeveyn adlarına ait alanlardan bilgisi girilmiş olan ilk ismi sorgu sonucunda geri dönderecek örnek sorgu alttaki gibidir.
Sorgu COALESCE
1 2 3 | SELECT Name AS StudentName, COALESCE(ParentMotherName, ParentFatherName, ParentGrandMaName, ParentGrandPaName) AS ParentName FROM student; |
Sorgu ISNULL
1 2 3 | SELECT Name AS StudentName, ISNULL(ParentMotherName, ISNULL(ParentFatherName, ISNULL(ParentGrandMaName, ParentGrandPaName))) AS ParentName FROM student; |
Sonuç
StudentName | ParentName |
---|---|
Hakan | Hande |
Ceyda | Osman |
Serkan | Ferit |
Serkan | Ekrem |
Gördüğünüz üzere Anne Adı yok baba adı yoksa büyük anne adı oda yoksa büyük baba adını dönecek şekilde bir ParentName kolonu ekledik sorgumuza ve her bir öğrenciye ait ebeveyn adını dönmüş oluyoruz.
Demo: http://sqlfiddle.com/#!18/a7540/1
📚 Sql Server COALESCE Benzeri Kaynaklar
- SQL Server Üzerinden Windows Servisleri Yönetmek
- Sql de Tüm Ayların Son Günlerini Alma
- Sql Server da Unutulan “sa” Şifresini 3 Farklı Yöntem ile Değiştirme
✍ Lütfen olumlu-olumsuz tüm görüşlerinizi bana yorum yada mail yolu ile iletmeyi ihmal etmeyin.
🔗 Sosyal medya kanallarından makaleyi paylaşarak destek olursanız çok sevinirim.
👋 Bir sonraki makalede görüşmek dileğiyle.