SQL'de Case ve When/Then Kullanımı
23 Dec 2013Sql Server üzerinde yaptığımız işlerde, yine kod tarafında çok büyük bir kolaylık sağlayan case ve when/then kullanımına değineceğiz. Nasıl çalıştığına bir bakalım;
Genel Syntax
SELECT (CASE KolonAdi WHEN 'Kolondan Gelen Değer' THEN 'Result'da gosterilecek değer' end) from TabloAdi
Sorgu yaparken yukarıda bahsettiğimiz gibi case uygulanacak kolonda when kısmına kolondaki değeri then kısmına da sonuç olarak yazdırmak istediğimiz değeri veririz. Örneğimizle birlikte daha kolay anlayacağınızı düşünüyorum, buyrun;
select * from HumanResources.Employee -- İlk önce kullanabileceğimiz kolonlara bi bakalım.
select (case Gender
when 'M' then 'Bay' -- Male(Male) ise Bay yazdıralım.
when 'F' then 'Bayan' -- F(Female) ise Bayan yazdıralım.
end) as [Cinsiyet],
(case MarialStatus
when 'M' then 'Evli' -- M(Married) ise Evli yazdıralım.
when 'S' then 'Bekar' -- S(Single) ise Bekar yazdıralım.
end) as [Evlilik Durumu] from HumanResources.Employee
Kısaca örnekte ne yaptık; AdventureWorks veritabanımızdan insan kaynakları tablomuzu case’imize atayıp iki kolonu(Cinsiyet ve Evlilik Durumu) da case için kullandık. İngilizce olan değerleri when’e denk gelen kolon değerini then ifademizle Türkçeye çevirdik ve aşağıdaki gibi sorgumuzu sonuçlandırdık.
Yine AdventureWorks üzerinden gidelim. Bu sefer ürün tablomuzdan bi kaç renk alıp case ile when/then durumlarına bakalım.
select (case Color
when 'Black' then 'Siyah'
when 'Blue' then 'Mavi'
when 'Grey' then 'Gri'
when 'Multi' then 'Cok Renk'
when 'Red' then 'Kırmızı'
when 'Silver' then 'Gumus'
when 'Silver/Black' then 'Gumus / Siyah'
else 'Renksiz'
end) as [Renkler] from Production.Product
Burada ürün tablomuzdaki renk kolonumuzu case’e aldık, neticesinde renklerin ingilizce halini türkçeleştirmiş olduk.
Case ile When/Then durumlarını bir önceki dersimizdeki gibi if-else durumu ile de yapabilirdik fakat daha çok kod yazmamız gerekecekti. Herşeyin fazlası zarar diye atalarımızı da anmış olalım.Bence böyle Sql daha güzel, kısaca az kod, çok iş 😉