Kategoriler
ORACLE

Oracle Database 11g – SQL Temelleri I || Conversion Functions

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

dönüşümler genel tablo

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.

 

to_char kullanım

 

SELECT to_char(sysdate, 'MON-MONTH/Q/SCC-CC/YYYY-YY/HH24:MI:SS AM') from dual;

sysdate_tarih kullanımı

 

Tarihlerin yazımı ile ilgili aşağıdaki görsellerde bütün kullanım şekilleri gösterilmiştir.

tarih kullanımı 02
tarih kullanımı 01

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

fm ifadesi

To_Char fonksiyonu ile kullanabileceğiniz bazı özelliklere ait görsele bakalım.

to_char ile kullanılan

Örneklerden üzerinden açıklayacak olursak.

SELECT TO_CHAR(salary, '$99,999.00') SALARY
FROM employees;

to_char çıktı

 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

to_date

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 */

NVL

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 */

nvl2

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.

nullif

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

coalesce

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

case

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;

case örnek

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.

decode

 

“Oracle Database 11g – SQL Temelleri I || Conversion Functions” için bir yanıt

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir