Tek Sıralı İşlevleri Kullanma
Çıktıyı özelleştirmek için Tek satır işlevlerini kullanma
Oracle SQL, çeşitli görevler için kullanılabilen zengin bir yerleşik işlev kitaplığı sağlar. Bir işlevin temel yetenekleri, dizelerin büyük / küçük harfe dönüştürülmesi, dizge içi veya alt dize işlemleri, sayısal veriler üzerinde matematiksel hesaplamalar ve tarih türü değerleri üzerinde tarih işlemleri olabilir. SQL İşlevleri isteğe bağlı olarak kullanıcıdan bağımsız değişkenler alır ve zorunlu olarak bir değer döndürür.
Daha geniş bir kategoride, iki tür işlev vardır: -
Single Row functions- Tek satır işlevleri, tek satırda çalışan ve satır başına bir çıktı döndüren işlevlerdir. Örneğin, uzunluk ve durum dönüştürme işlevleri tek sıralı işlevlerdir.
Multiple Row functions - Birden çok satır işlevi, satır grupları üzerinde çalışır ve tüm satır kümesi için bir sonuç döndürür. Grup İşlevleri olarak da bilinir.
Tek sıralı fonksiyonlar
Tek satır işlevleri, karakter işlevleri, sayısal işlevler, tarih işlevleri ve dönüştürme işlevleri olabilir. Bu işlevlerin veri öğelerini değiştirmek için kullanıldığını unutmayın. Bu işlevler bir veya daha fazla girdi argümanı gerektirir ve her satırda çalışır, böylece her satır için bir çıktı değeri döndürür. Bağımsız değişken bir sütun, değişmez değer veya bir ifade olabilir. Tek satırlı işlevler SELECT deyiminde, WHERE ve ORDER BY yan tümcesinde kullanılabilir. Tek sıralı işlevler şunlar olabilir -
General functions- Genellikle NULL işleme işlevleri içerir. Kategori altındaki işlevler NVL, NVL2, NULLIF, COALESCE, CASE, DECODE'dur.
Case Conversion functions- Karakter girişini kabul eder ve bir karakter değeri döndürür. Kategori altındaki işlevler UPPER, LOWER ve INITCAP'dir.
UPPER işlevi bir dizeyi büyük harfe dönüştürür.
LOWER işlevi bir dizeyi küçük harfe dönüştürür.
INITCAP işlevi, bir dizenin yalnızca ilk alfabelerini büyük harfe dönüştürür.
Character functions- Karakter girişini kabul eder ve sayı veya karakter değerini döndürür. Kategori altındaki işlevler CONCAT, LENGTH, SUBSTR, INSTR, LPAD, RPAD, TRIM ve REPLACE'dir.
CONCAT işlevi iki dize değerini birleştirir.
LENGTH işlevi, giriş dizesinin uzunluğunu döndürür.
SUBSTR işlevi, belirli bir başlangıç noktasından bitiş noktasına bir dizenin bir bölümünü döndürür.
INSTR işlevi, belirli bir dizedeki bir karakterin veya dizenin sayısal konumunu döndürür.
LPAD ve RPAD işlevleri, verilen dizeyi belirli bir karakterle belirli bir uzunluğa kadar doldurur.
TRIM işlevi, dizi girişini baştan veya sondan kırpar.
REPLACE işlevi, giriş dizesindeki karakterleri belirli bir karakterle değiştirir.
Date functions- Tarih aritmetik işlemleri tarih veya sayısal değerler döndürür. Kategori altındaki işlevler şunlardır: MONTHS_BETWEEN, ADD_MONTHS, NEXT_DAY, LAST_DAY, ROUND ve TRUNC.
MONTHS_BETWEEN işlevi, iki tarih arasındaki ayların sayısını döndürür.
ADD_MONTHS işlevi, bir giriş tarihine 'n' ay sayısı ekler.
SONRAKİ_GÜN işlevi, belirtilen tarihin sonraki gününü döndürür.
LAST_DAY işlevi, giriş tarihinin ayının son gününü döndürür.
YUVARLA ve TRUNC işlevleri, tarih değerini yuvarlamak ve kırpmak için kullanılır.
Number functions- Sayısal girişi kabul eder ve sayısal değerler döndürür. Kategori altındaki fonksiyonlar ROUND, TRUNC ve MOD'dur.
YUVARLA ve TRUNC işlevleri, sayı değerini yuvarlamak ve kesmek için kullanılır.
MOD, bölme işleminin kalanını iki sayı arasında döndürmek için kullanılır.
Çizimler
Genel fonksiyonlar
Aşağıdaki SELECT sorgusu NVL işlevinin kullanımını gösterir.
SELECT first_name, last_name, salary, NVL (commission_pct,0)
FROM employees
WHERE rownum < 5;
FIRST_NAME LAST_NAME SALARY NVL(COMMISSION_PCT,0)
-------------------- ------------------------- ---------- ---------------------
Steven King 24000 0
Neena Kochhar 17000 0
Lex De Haan 17000 0
Alexander Hunold 9000 0
Vaka Dönüştürme işlevleri
Aşağıdaki SELECT sorgusu, büyük / küçük harf dönüştürme işlevlerinin kullanımını gösterir.
SELECT UPPER (first_name), INITCAP (last_name), LOWER (job_id)
FROM employees
WHERE rownum < 5;
UPPER(FIRST_NAME) INITCAP(LAST_NAME) LOWER(JOB_
-------------------- ------------------------- ----------
STEVEN King ad_pres
NEENA Kochhar ad_vp
LEX De Haan ad_vp
ALEXANDER Hunold it_prog
Karakter fonksiyonları
Aşağıdaki SELECT sorgusu, iki dize değerini birleştirmek için CONCAT işlevinin kullanımını gösterir.
SELECT CONCAT (first_name, last_name)
FROM employees
WHERE rownum < 5;
CONCAT(FIRST_NAME,LAST_NAME)
--------------------------------
EllenAbel
SundarAnde
MozheAtkinson
DavidAustin
Aşağıdaki SELECT sorgusu, SUBSTR ve INSTR işlevlerinin kullanımını gösterir. SUBSTR işlevi, girdi dizesinin 1. konumdan 5. konuma olan kısmını döndürür. INSTR işlevi, addaki 'a' karakterinin sayısal konumunu döndürür.
SELECT SUBSTR (first_name,1,5), INSTR (first_name,'a')
FROM employees
WHERE rownum < 5;
SUBST INSTR(FIRST_NAME,'A')
----- ---------------------
Ellen 0
Sunda 5
Mozhe 0
David 2
Aşağıdaki SELECT sorgusu, çalışan ve iş bilgilerini güzel bir şekilde yazdırmak için LPAD ve RPAD kullanımını gösterir.
SELECT RPAD(first_name,10,'_')||LPAD (job_id,15,'_')
FROM employees
WHERE rownum < 5;
RPAD(FIRST_NAME,10,'_')||
-------------------------
Steven____________AD_PRES
Neena_______________AD_VP
Lex_________________AD_VP
Alexander_________IT_PROG
Sayı işlevleri
Aşağıdaki SELECT sorgusu YUVARLA ve TRUNC işlevlerinin kullanımını gösterir.
SELECT ROUND (1372.472,1)
FROM dual;
ROUND(1372.472,1)
-----------------
1372.5
SELECT TRUNC (72183,-2)
FROM dual;
TRUNC(72183,-2)
---------------
72100
Tarih aritmetik işlemleri
Aşağıdaki SELECT sorgusu, çalışanın işe alınma tarihi ile sistem tarihinin farkının yapıldığı bir tarih aritmetik fonksiyonunu gösterir.
SELECT employee_id, (sysdate - hire_date) Employment_days
FROM employees
WHERE rownum < 5;
EMPLOYEE_ID EMPLOYMENT_DAYS
----------- ---------------
100 3698.61877
101 2871.61877
102 4583.61877
103 2767.61877
Tarih fonksiyonları
Aşağıdaki SELECT sorgusu MONTHS_BETWEEN, ADD_MONTHS, NEXT_DAY ve LAST_DAY işlevlerinin kullanımını gösterir.
SELECT employee_id, MONTHS_BETWEEN (sysdate, hire_date) Employment_months
FROM employees
WHERE rownum < 5;
EMPLOYEE_ID EMPLOYMENT_MONTHS
----------- -----------------
100 121.504216
101 94.3751837
102 150.633248
103 90.9558289
SELECT ADD_MONTHS (sysdate, 5), NEXT_DAY (sysdate), LAST_DAY (sysdate)
FROM dual;
ADD_MONTH NEXT_DAY( LAST_DAY(
--------- --------- ---------
01-JAN-14 05-AUG-13 31-AUG-13