Daha önceki dersler için: https://selimkaratas.com.tr/oracle-11g-r2-egitimi-ders-notlari
Using Conversion Functions and Conditional Expressions
4- Dönüşüm Fonksiyonları ve Koşul İfadeleri
TO_CHAR Fonksiyonu
TO_CHAR(date, ‘format_model’) şeklinde yazılır.
SELECT employee_id, TO_CHAR(hire_date, 'DAY/MON/YYYY') Month_Hired FROM employees WHERE last_name = 'King'; -- hire_date görünümü ile alakalı değişimler yapabiliriz.
SELECT to_char(sysdate, 'MON-MONTH/Q/SCC-CC/YYYY-YY/HH24:MI:SS AM') from dual;
Tarihlerin yazımı ile ilgili aşağıdaki görsellerde bütün kullanım şekilleri gösterilmiştir.
SELECT last_name, TO_CHAR(hire_date, 'fmDD Month YYYY') AS HIREDATE FROM employees; -- fm ifadesi karakter boşluklarını kapatır ve görünümü düzeltir -- ddspth ifadesi yazıyla rakamı yazar. mesela seventeenth
To_Char fonksiyonu ile kullanabileceğiniz bazı özelliklere ait görsele bakalım.
Örneklerden üzerinden açıklayacak olursak.
SELECT TO_CHAR(salary, '$99,999.00') SALARY FROM employees;
TO_DATE Fonksiyonu
SELECT LAST_NAME,HIRE_DATE FROM EMPLOYEES WHERE HIRE_DATE > to_date('01-01-97','DD-MM-RR'); --belirli formatta girmemiz gereken tarih formatını bilmediğimiz için istediğimiz şekle sokup sorguladık
NVL Fonksiyonu
SELECT LAST_NAME,NVL(COMMISSION_PCT,0), (12*SALARY)+(12*SALARY*NVL(COMMISSION_PCT,0)) "YILLIK TOPLAM KAZANCLAR" FROM EMPLOYEES; /* normalde null değerlere sahip satırlarda işlem yapınca sonuç null gelir. bunu engellemek için NVL fonksiyonundan faydalanıyoruz */
NVL2 Fonksiyonu
SELECT last_name,salary,commission_pct, nvl2(commission_pct,'SAL+COMM','SALARY') gelir_detayi from employees; /* komisyon kısmı bir değere sahip ise sall+comm yazılır. eğer komisyon null değere sahip ise salary yazılır */
NULLIF Fonksiyonu
select first_name,length(first_name) "expr1", last_name,length(last_name) "expr2", nullif(length(first_name),length(last_name)) "result" from employees; -- expr1 ile expr2 farklı ise expr1 yazılır -- expr1 ile expr2 aynı ise null yazılır.
COALESCE Fonksiyonu
select last_name,employee_id,manager_id, commission_pct, coalesce(to_char(commission_pct),to_char(manager_id), 'NO COMMISSION AND NO MANAGER') FROM EMPLOYEES ORDER BY 4; -- eğer manager_id ile comm dolu ise komisyon yazılır -- eğer manager_id dolu comm null ise manager_id yazılır -- eğer ikisi de boş ise NO COMMISSION AND NO MANAGER yazılır
CASE Fonksiyonu
SELECT last_name,job_id,salary, case job_id when 'IT_PROG' THEN SALARY*1.05 WHEN 'ST_CLERK' THEN SALARY*1.07 WHEN 'SA_REP' THEN SALARY*1.10 ELSE SALARY END "DUZENLENMIS MAASLAR" FROM EMPLOYEES;
-- IT_PROG çalışanlarına %5 zam --ST_CLERK çalışanlarına %7 zam -- SA_REP çalışanlarına %10 zam
SELECT LAST_NAME,DEPARTMENT_ID, CASE when DEPARTMENT_ID between 10 and 30 then 'a' when department_id between 31 and 60 then 'b' when department_id between 61 and 100 then 'c' else 'd' end "DEPARTMAN YORUMLARI" FROM EMPLOYEES ORDER BY 2;
DECODE Fonksiyonu
SELECT LAST_NAME,DEPARTMENT_ID, DECODE (DEPARTMENT_ID ,10 ,'Muzik Bölümü' ,20 ,'Resim Bölümü' ,30 ,'Eğitim Bölümü' ,'Diğer')"DEPARTMAN YORUMLARI" FROM EMPLOYEES ORDER BY 2; --Binevi case gibidir. Ama Case daha kullanışlıdır.
“Oracle Database 11g – SQL Temelleri I || Conversion Functions” için bir yanıt
Sealmun aleyküm hocam sql ile ilgili join ve altsorgulardan oluşan örnekler yazabilir misiniz…