SQL Notları-1(Case Kullanımı)

4 Nisan 2014
Posted by Çağatay Yıldız
3053 Views

Bu yazı dizimizde sql e dair ufak notlar paylaşacağız. İlk olarak sql de case yapısından bahsedelim. Bu yapı c# da kullandığımız switch-case yapısıyla oldukça benzer. Örneğin benim Personel tablomun medeni durum kolonuna kayıtlı Bekar veya Evli adında iki değişkenim var. Bu verileri çekerken verinin içeriğini belirli koşullara göre değiştirmek istiyorum örneğin Evli ise 1 bekar ise 0 olsun. Yazmam gereken sorgu şu şekilde

select  
Case MedeniDurum when 'Evli' then '1'
     when 'Bekar' then '0'end  
from Personel

Şimdi ise Northwind database kullanarak başka bir örnek yapalım. Örneğimizde Country kolonu Germany olan veri Almanya, UK olan İngiltere olarak gelecek diğer tüm verileri de default değeri olarak ekrana yazdıracağız. Eğer burada else kullanmassak veriler NULL olarak çekilecektir.

select  
Case Country when 'Germany' then 'Almanya'
     when 'UK' then 'İngiltere'
else Country end  
from Customers

Aynı sorguda ufak bir değişiklikle UK ve Germany dışındaki tüm verileri ‘Diğer’ adıyla getirebilirim. Yazmam gereken query ise şu şekilde.

select  
Case Country when 'Germany' then 'Almanya'
     when 'UK' then 'İngiltere'
else 'Diğer' end  
from Customers

Dikkat ettiğimizde buradaki koşullarda bire bir eşitleme kullandık dilersek biz bu yapıda farklı koşullarda tanımlayabiliriz. Örneğin Products tablosunda UnitPrice kolonuna bakalım. Burada veriler gelirken belirli fiyat aralıklarına göre koşul verelim. Fiyatı 20 nin altında olan ürünler ‘kampanyalı’ yazarak olarak ekrana gelsin.

select ProductName,
case when UnitPrice < 20 then 'Kampanyalı Ürün'
end
from products