Merhaba Arkadaşlar bu yazımızda Case ve Decode işlemlerinden bahsedeceğiz. Oracle ‘da kullanılan Case ifadesi ve Decode fonksiyonu programlamadan bildiğimiz IF-THEN-ELSE ‘e karşılık gelir.Bu işlemleri yaparak veri tabanımızdaki bilgilerin belirli şartlara uyup uymadığını bulabiliriz. Case yapısı ANSI SQL çalıştığından standarttır (MS SQL vs. Çalışabilir) ama Decode Oracle’a özel syntax’dır.
CASE Case ifadesi koşullarımızı, şartlarımızı toplu bir biçimde sorgumuza yazmamızı ve şartımıza uyanlara operasyon yapmamızı sağlar ve işimizi kolaylaştırır. Decode ye göre daha okunaklıdır. Hemen örneklere geçelim employees tablomuzdaki çalışanlardan job_id IT_PROG olanlara %10,ST_CLERK olanlara %15, SA_REP olanlara %20 zam yapıp ekrana monitör edelim.
SELECT last_name, job_id, salary, CASE job_id WHEN 'IT_PROG' THEN 1.10*salary WHEN 'SH_CLERK' THEN 1.15*salary WHEN 'SA_REP' THEN 1.20*salary ELSE salary END "REVISED_SALARY" FROM employees;
Görüldüğü gibi bir sorgu içinde aynı anda koşulumuzu belirtip matematiksel işlemimizi’de yapmış olduk. When yazıp koşulu belirtiyoruz, then yazıp yapılacak işlemi belirtiyoruz.
Bir örnek daha yapalım,örnekte şartımızda ‘<‘ operatörünü kullanalım, bu seferde çalışanlarımızın maaşları 5000 den küçükse ‘Junior DBA’, 5000-10000 arasında ise ‘Senior DBA’,10000-20000 arasında ise ‘Master DBA’ ve 20000 den fazla ise ‘The Boss’ bastıralım ekrana.
SELECT last_name,salary, (CASE WHEN salary<5000 THEN 'Low' WHEN salary<10000 THEN 'Medium' WHEN salary<20000 THEN 'Good' ELSE 'Excellent' END) qualified_salary FROM employees;
DECODE Decode fonksiyonu; Case ifadesi gibi çalışır yalnız syntaxı farklıdır.Kısaca şöyle diyebilirim,Case ifadesindeki when,then ve else ifadelerinin yerine ‘,’ virgül koyuyoruz. Daha net anlaşılması için case ifadesinin ilk örneğini decode fonksiyonuyla gösterelim.
SELECT last_name, job_id, salary, DECODE(job_id, 'IT_PROG', 1.10*salary, 'SH_CLERK', 1.15*salary, 'SA_REP', 1.20*salary, salary) REVISED_SALARY FROM employees;
Arkadaşlar Case ifadesini ve Decode fonksiyonundan bahsettik inşallah faydalı olmuştur.Sonraki yazımızda Grup fonksiyonlarından(AVG,SUM,MIN,MAX,COUNT) bahsedeceğiz.