Ana içeriğe geç
Kesit SQL
Orta · Sertifika Hazırlık

1Z0-071: Oracle tek satır fonksiyonları (karakter, sayı, tarih, genel)

INITCAP, LPAD, INSTR, SUBSTR; ROUND/TRUNC/MOD; MONTHS_BETWEEN, ADD_MONTHS, NEXT_DAY; NVL ailesi.

Uygulamada aç, 7 alıştırmayı çözÜcretsiz, hesap gerekmez, kurulum yok.

Bu sayfa dersin okuma sürümüdür. Metin bir kutuyu çalıştırmanı ya da adıma geçmeni söylüyorsa dersi uygulamada aç.

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;

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;

Genel fonksiyonlar

FonksiyonDö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.
Alıştırmalara geç (7)