Abdurrahman Işık some development practices

SQL'de Case ve When/Then Kullanımı

Sql 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.

case-then-in-sql

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ş 😉