SQL FONSKİYONLARI -1

  • Veriler üzerindeki hesaplamaları tanımlamak.
  • Özel verileri düzenlemek.
  • Satır grupları için çıktıları ustaca kullanmak.
  • Tarihleri ve numaraları formatlamak.
  • Sütün veri tiplerini çevirmek.

FONK1

Temel olarak SQL function ları 2 ye ayrılır Single Row Function (Tek Satır Fonksiyonlar), Multiple Row Function (Grup Function) Çok Satır Fonksiyonları.

function

 

KARAKTER FONKSİYONLARI

karakter function

ÖRNEK:

select first_name,
lower(first_name) “Küçük Harfli”,
upper(first_name) “Büyük Harfli”,
initcap(lower(first_name)) “Ilk Harfi Büyük”
from hr.employees;

fonkelin

 

ÖRNEK:

SELECT first_name, last_name,
CONCAT(first_name, last_name) ,
job_id, LENGTH (last_name), INSTR(last_name, ‘a’) “‘a’ nerede?”,
LPAD(first_name,10,’*’) SOLA_DOLDUR,
RPAD(first_name,10,’-‘) SAGA_DOLDUR,
REPLACE(first_name,’e’,’a’) DEGISTIR,
TRIM(‘ HELLO WORLD ‘) TEMIZLE
FROM hr.employees WHERE SUBSTR(job_id, 4) = ‘REP’;

fonk2

SAYI FONKSİYONLARI

ROUND : Yuvarlama yapar
TRUNC: Virgülden sonrasını keser
MOD: Mod alır
SIGN: Sayının işaretini belirler
FLOOR: Yuvarlama yapar

TARİH FONKSİYONLARI

 

Tabloya tarih sütununa sahip bir kayıt ekleneceği zaman, yüzyıl bilgisi SYSDATE işlevinden alınır. SYSDATE geçerli veritabanı sunucu tarih ve saatini döndüren bir tarih işlevdir.

select  sysdate from dual;

ile veritabanında ki geçerli tarih ve saati alabiliriz

Tarih fonksiyonları Oracle’daaşağıdaki tabloda verildiği gibi işlem yapar. Tüm tarih fonksiyonları MONTHS_BETWEEN fonksiyonu dışında bir sayısal veri değeri döndüren bir DATE veri türü ile bir değer döndürür.

date

ÖRNEK:

select MONTHS_BETWEEN (TO_DATE (‘01.08.2017’, ‘dd.mm.yyyy’), TO_DATE (‘01.01.2016’, ‘dd.mm.yyyy’) ) kac_ay,
sysdate su_an, add_months(sysdate,5) ay_ekle,
next_day(sysdate,’MONDAY’) sonraki_ptesi,
last_day(sysdate) ayin_son_gunu,
round(sysdate-60,’MONTH’) r1,
round(sysdate,’YEAR’) r2,
trunc(sysdate ,’MONTH’) t1,
trunc(sysdate ,’YEAR’) t2
from dual;

month

TARİHLER İLE ARİTMETİK İŞLEMLER

tarihislem

DÖNÜŞTÜRME FONKSİYONLARI

donusum

Implicit dönüştürme fonksiyonları

  • VARCHAR2 OR CHAR ——>NUMBER
  • VARCHAR2 OR CHAR ——-> DATE
  • NUMBER  ———————–> VARCHAR2
  • DATE  —————————–>VARCHAR2

Explict Dönüştürme Fonksiyonları

explict

TO_CHAR FONKSİYONU (TARİH)

Tarih ve zamanlar için :

  • Kullanımı : TO_CHAR(tarih,’format’)
  • Büyük küçük harf ayırt eder ve tek tırnak içinde yazılmalıdır.
  • Geçerli herhangi bir tarih formatı içermelidir.
  • Tarih değerinden bir virgül ile ayrılır.

dateformat

ÖRNEK :

select hire_date,
to_char(hire_date,’dd.mm.yyyy’) Noktali,
to_char(hire_date, ‘DD Month YYYY’) “Ayri Ayri”,
to_char(hire_date, ‘Ddspth Month YYYY HH:MI:SS’) “Ayrı Ayrı Tarih”,
to_char(hire_date, ‘YYYY.MM.DD HH24:MI:SS’) “Benim Formatım”
from hr.employees;

tarihcikti

TO_NUMBER VE TO_DATE FONKSİYONLARI

 TO_NUMBER(char [, ‘format’]) Bir karakter dizisini belirtilen bir formatta sayıya çevirir.

TO_DATE(char [, ‘format’]) Bir karakter dizisini belirtilen bir formatta tarihe çevirir.

ÖRNEK:

select TO_NUMBER(‘1071’),
SYSDATE,
TO_DATE(’13/06/2008′,’dd.mm.yyyy’),
TO_DATE(‘20180701’, ‘yyyymmdd’),
TO_DATE(‘071918’, ‘MMDDYY’)
FROM dual;

to_date

İÇ-İÇE FONKSİYONLAR

  • Fonksiyonlar iç içe çağrılabilirler.
  • Aşağıdaki şekilde en içteki fonksiyon en önce çalışır.
  • İçten dışa doğru sonuçlar aktarılır.

icice fonk

ÖRNEK: Personellerin adını, Soyadını ve Soyadının ilk 6 karakteri ile _FRK I birleştirip büyük harfe dönüşecek şekilde listeleyelim

SELECT first_name, last_name,UPPER(CONCAT(SUBSTR (LAST_NAME, 1, 6), ‘_FRK’)) FROM hr.employees;

içiçe

NVL FONKSİYONU

  • Null değerini gerçek değerlere dönüştürür.
  • Tarih, karakter ve sayı tiplerinde kullanılabilir.
  • Data tipleri uyumlu olmalıdır.
  • NVL(expr1, expr2)

ÖRNEK: Personellerin aylık maaşlarını,prim oranlarını ve yıllık maaşlarını listeleyelim

SELECT last_name,
salary,
NVL(commission_pct,0) “null OLANI 0 YAP”,
(salary*12) + (salary*12*NVL(commission_pct, 0)) AN_SAL
FROM hr.employees;

nvl

DECODE FONKSİYONU

    • Parametre olarak verilen sütun değerini yorumlayarak yeni değerler üretilmesini sağlar.

 

  •  Farklı dillerdeki IF-THEN-ELSE yapısı gibi işlem görerek çözme işlemi yapar.

ÖRNEK : Personellerin içinde IT_PROG pozisyonunda olanlara %30, ST_CLERK pozisyonunda olanlara %20 ve SA_REP pozisyonunda olanlara %50 zam olacak şekilde bilgileri listeleyelim

SELECT last_name, job_id, salary,
DECODE(job_id, ‘IT_PROG’, 1.30*salary, ‘ST_CLERK’, 1.20*salary, ‘SA_REP’, 1.50*salary,
salary) “Yeni Zamlı Maas” FROM hr.employees order by 1

Decode

CASE İFADESİ

Birçok sütun değerine göre yorum yaparak yeni değerler elde edilmesini sağlar.

Syntax

CASE expr
         WHEN comparison_expr1 THEN return_expr1
         WHEN comparison_expr2 THEN return_expr2
         ELSE else_expr

ÖRNEK: Personellerin içinde IT_PROG pozisyonunda olanlara %30, ST_CLERK pozisyonunda olanlara %20 ve SA_REP pozisyonunda olanlara %50 zam olacak şekilde bilgileri listeleyelim

select first_name,last_name, job_id, salary,
             CASE job_id WHEN ‘IT_PROG’ THEN 1.30*salary
             when ‘ST_CLERK’ then 1.20*salary
              when ‘SA_REP’ then 1.50*salary
              else salary end “Yeni Zamlı MAASLAR”
from hr.employees

Telefon numara kayıtlarını düzenleyen sql case ifadesi

 select  case when TELNO like '0%' THEN REPLACE(REPLACE(replace(substr(TELNO,2,length(TELNO)),' ',''),'(',''),')','') 
      when TELNO like '9%' THEN REPLACE(REPLACE(replace(substr(TELNO,3,length(TELNO)),' ',''),'(',''),')','')
      when TELNO like '+%' THEN REPLACE(REPLACE(replace(substr(TELNO,4,length(TELNO)),' ',''),'(',''),')','')
      else REPLACE(REPLACE(replace(TELNO,' ',''),'(',''),'(','') end as telno from XTABLE