CASE Deyimi
Sadece SELECT, UPDATE, DELETE sorgusu içinde kullanılır. Bağımsız olarak kullanılamaz.
CASE iki şekilde yazılabilir
1. yazım şekli
SQL server’da ise
CASE degisken
When değer1 then sonuc1
When değer2 then sonuc2
...
Else ...
End
Örnek,
CASE cinsiyet
WHEN 1 THEN 'Erkek'
WHEN 2 THEN 'Kız'
ELSE 'Bilinmiyor'
END
Sorgulanan, cinsiyet değeri 1 ise sonuç Erkek, 2 ise sonuç kız, farklı veya NULL ise Bilinmiyor sonucunu üretir.
İkinci yazım şekli
CASE
When koşul1 then sonuc1
When koşul2 then sonuc2
...
Else ...
End
CASE
WHEN cinsiyet=1 THEN ‘Erkek’
WHEN cinsiyet=2 THEN ‘Kız’
ELSE ‘Bilinmiyor’
END
Örnek: personel tablosunu listeleyiniz, listede cinsiyet yerine , cinsiyet değeri 1 ise erkek, 2 ise kız yazsın
SELECT *,
CASE cinsiyet
WHEN 1 THEN 'Erkek'
WHEN 2 THEN 'Kız'
END as cinsiyet_yazi
FROM Personel
Örnek: personel tablosunu listeleyiniz, maas değeri 1000 az ise Maaş Az, 1000-1500 arasında ise maaş orta, 1500’den maaş çok yazsın.
SELECT *,
CASE
WHEN maas<1000 THEN 'maaş az'
WHEN maas between 1000 and 1500 THEN 'maaş orta'
WHEN maas>1500 THEN 'maaş çok'
END as maas_durumu
FROM personel
Örnek: personel tablosunu listeleyiniz. Departman değeri 10 ise pazarlama, 12 ise üretim, her ikisi değilse ‘ihracat’ yazsın.
1. tip case ile yazalım.
SELECT *,
CASE departman
WHEN 10 THEN 'Pazarlama'
WHEN 12 THEN 'Üretim'
ELSE 'İhracat'
END as departman_adi
FROM personel
2. tip case ile yazalım.
SELECT *,
CASE
WHEN departman =10 THEN 'Pazarlama'
WHEN departman =12 THEN 'Üretim'
ELSE 'İhracat'
END as departman_adi
FROM personel
Hangi case ifadesini kullanacağımızı nasıl tespit ederiz?
-- Eğer dallanma sabit bir değere bağlı ise hem birinci, hem de ikinci case ifadesini kullanabiliriz.
-- Eğer dallanma bir koşula, bir aralığa bağlı ise ikinci tip case kullanmalıyız.