MySQL Case When Kullanımı

Yazıda MySQL VTY sisteminde if koşula alternatif olarak SQL Server, Oracle vb. sistemlerde de sıklıkla kullanılan CASE WHEN kullanımı ile ilgili bilgiler yer almaktadır.

MySQL içerisinde if fonksiyonu ve if deyimine alternatif olarak kullanılan, CASE deyimi ile bir koşula veya değere göre istenilen komutlar çalıştırılabilir.

MySQL CASE WHEN

MySQL CASE WHEN ifadesi ile bir değerin farklı değer alabileceği durumların kontrolü için kullanılır.

Ayrıca MySQL IF ifadesine benzemektedir.

CASE KOŞUL_DEĞER
WHEN DURUM-1 THEN
-- komutlar - 1
WHEN DURUM-2 THEN
--  komutlar - 2
ELSE
-- komutlar - N
END CASE;

MySQL CASE ifadesi içerisindeki KOŞUL_DEĞER ifadesi bir koşul alırsa WHEN ifadesine true ve false ile kontrol sağlanır, bir değer alırsa WHEN ifadesine değerin alabileceği değerler yazılarak kontrol sağlanır.

MySQL IF Kullanımı yazısında yer alan işlemleri CASE WHEN kullanarak yapalım.

SELECT (CASE 5 > 6
WHEN FALSE THEN "6 BÜYÜK"
WHEN TRUE THEN "5 BÜYÜK"
END) AS sonuc;

MySQL CASE WHEN ifadesini kullanarak urunler tablosunda yer alan kat_id sütuna göre işlem yapalım.

SELECT *, (CASE kat_id
WHEN 1 THEN "Bilgisayar"
WHEN 2 THEN "Telefon"
WHEN 3 THEN "Elektronik"
ELSE "Kategorisi yok"
END) AS sonuc FROM urunler;

Örnekte kat_id değeri 1 ise Bilgisayar, 2 ise Telefon, 3 ise Elektronik ve bu değerlerden başka bir ifade ise Kategorisi yok ifadesini sonuc sütununa yazdıracaktır.

Saklı yordamlar içerisinde CASE WHEN kullanımı ile ilgili örnek aşağıdadır.

DELIMITER //
CREATE PROCEDURE AdiSoyadiBul(IN sayi INT, OUT durum VARCHAR(50))
BEGIN

CASE sayi
WHEN 1 THEN
  SET durum = 'Yusuf';
WHEN 2 THEN
  SET durum = 'SEZER';
WHEN 3 THEN
  SET durum = 'Yusuf SEZER';
ELSE
  SET durum = 'Yusuf Sefa SEZER';
END CASE;

END//
DELIMITER ;

Yazılan saklı yordamı çalıştıralım.

SET @sonuc = 0;
CALL AdiSoyadiBul(3, @sonuc);
SELECT @sonuc;

Saklı yordam çalıştırıldığında Yusuf Sefa SEZER değerini @sonuc değişkenine atayacaktır.

MySQL CASE WHEN ifadesi ayrıca CASE ifadesine koşul veya değer yazılmadan da gibi kullanılır.

SELECT *, (CASE
WHEN kat_id = 1 THEN "Bilgisayar" 
WHEN kat_id = 2 THEN "Telefon"
WHEN kat_id = 3 THEN "Elektronik"
ELSE "Kategorisi yok"
END) AS sonuc FROM urunler;

Hayırlı günler dilerim.

Yusuf SEZER

Yusuf SEZER

Computer Engineer who interested about web technologies, algorithms, artificial intelligence and embedded systems; constantly exploring new technologies.


Bunlara'da bakmalısın!