Karakter fonksiyonları
SELECT INITCAP('ankara merkez') AS initcap_,
LPAD('42', 5, '0') AS lpad_,
RPAD('SQL', 6, '*') AS rpad_,
SUBSTR('Kesit', 2, 3) AS substr_,
SUBSTR('Kesit', -3) AS sondan_3,
INSTR('banana', 'a', 1, 2) AS ikinci_a,
LENGTH('Merhaba') AS uzunluk,
TRIM(' x ') AS trim_,
REPLACE('2024-12-31', '-', '/') AS replace_
FROM dual;
SUBSTR(s, -3)negatif başlangıçta sondan sayar.INSTR(s, aranan, başlangıç, kaçıncı): başlangıç negatifse sondan geriye arar; bulamazsa 0.CONCATOracle'da yalnızca iki argüman alır; fazlası için||kullanılır.TRIM(LEADING '0' FROM s),LTRIM,RTRIM.
Sayı fonksiyonları
SELECT ROUND(15.567, 1) AS r1,
ROUND(15.567, -1) AS r_onlar,
TRUNC(15.567, 1) AS t1,
MOD(17, 5) AS kalan,
CEIL(4.1) AS tavan,
FLOOR(4.9) AS taban
FROM dual;
Negatif basamak sayısı virgülün soluna yuvarlar: ROUND(15.567, -1) = 20.
Tarih fonksiyonları
SELECT MONTHS_BETWEEN(DATE '2024-12-31', DATE '2024-06-30') AS ay_farki,
ADD_MONTHS(DATE '2024-01-31', 1) AS ay_ekle,
NEXT_DAY(DATE '2024-12-25', 'MONDAY') AS sonraki_pazartesi,
LAST_DAY(DATE '2024-02-10') AS ay_sonu,
TRUNC(DATE '2024-12-25', 'MM') AS ay_basi,
ROUND(DATE '2024-12-25', 'YEAR') AS yila_yuvarla
FROM dual;
- Tarih aritmetiği:
tarih + 1bir gün ekler,tarih2 - tarih1gün farkını sayı olarak verir,tarih + 1/24bir saat ekler. ADD_MONTHSayın son gününden başlarsa sonucun da ayın son günü olduğunu unutma (31 Ocak + 1 ay = 29 Şubat 2024).ROUND(tarih, 'MONTH')ayın 16'sında ve sonrasında bir sonraki aya yuvarlar;'YEAR'Temmuz'dan itibaren bir sonraki yıla.
Genel fonksiyonlar
| Fonksiyon | Döndürür |
|---|---|
NVL(a, b) | a NULL ise b |
NVL2(a, b, c) | a NULL değilse b, NULL ise c |
NULLIF(a, b) | a = b ise NULL, değilse a |
COALESCE(a, b, c, ...) | ilk NULL olmayan |
DECODE(x, d1, s1, d2, s2, varsayılan) | Oracle'a özgü CASE kısaltması; NULL'u NULL'a eşit sayar |
SELECT first_name,
NVL(TO_CHAR(manager_id), 'Yönetici yok') AS yonetici,
NVL2(email, 'Var', 'Yok') AS email_durumu,
DECODE(dept_id, 1, 'Satış', 3, 'Analitik', 'Diğer') AS bolum
FROM employees
WHERE emp_id <= 6;
Sınav tuzağıNVL'nin iki argümanı uyumlu tipte olmalı:
NVL(manager_id, 'Yok') sayı sütununa metin verdiği için hata verir; önce TO_CHAR.