Tags

, ,

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;
Case Expression

Case Expression

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;
Case Expression2

Case Expression2

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;
Decode Function

Decode Function

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.