haloo,,
mari belajar lagi,,
I. TUJUAN :
1. Dapat memahami General Function.
2. Dapat membuat contoh penggunaan General Function pada tabel.
3. Dapat menerapkan command pada tabel.
SUBJEK PEMBAHASAN : NVL, NVL2, DECODE, CASE WHEN, etc.
**************
Fungsi general (General function) merupakan bagian dari Single Row Function, dimana fungsi ini memproses satu data pada satu waktu dan mengembalikan satu buah hasil tiap data. Fungsi general adalah fungsi yang bisa dioperasikan atau digunakan pada setiap tipe data tanpa melihat jenis tipe yang digunakan. Adapun yang termasuk dalam fungsi general yaitu :
1. NVL
2. NVL2
3. NULLIF
4. COALESCE
5. CASE
6. DECODE
7. GREATEST
8. LEAST
**********
1. NVL
NVL adalah fungsi yang akan membandingkan apakah dalam data dalam database terdapat nilai null dan menggantinya dengan sebuah nilai yang tidak null. Hal ini dikarenakan jika dalam suatu database terdapat nilai null, maka untuk beberapa fungsi tidak bisa mengolah nilai null sehingga hasilnya akan menyebabkan data tidak konsisten. Adapun syntax penulisan NVL ini yaitu:
NVL(ekpresi1, ekspresi2)
Dimana :
Ekspresi1: ekspresi yang mungkin mengandung null
Ekspresi2: nilai untuk mengganti nilai null tersebut
Jadi, jika ekspresi1 bernilai null, maka fungsi akan mengembalikan ekspresi2 dan mengganti nilai dari ekspresi1 (null) dengan nilai ekspresi2. Dan jika ekspresi1 bernilai tidak null, maka fungsi akan tetap mengembalikan nilai dari ekspresi1 tersebut (tanpa diubah). Adapun contoh penggunaan dari fungsi NVL ditunjukkan pada gambar berikut.
|
pengunaan NVL |
2. NVL2
Fungsi NVL2 ini hamper sama seperti fungsi NVL. Bedanya, pada NVL2 ini menggunakan 3 buah ekspresi. Adapun syntax penulisan NVL2 ini yaitu sebagai berikut:
NVL(ekpresi1, ekspresi2, ekspresi3)
Dimana :
Ekspresi1: ekspresi yang mungkin mengandung nilai null
Ekspresi2: nilai yang dikembalikan jika ekspresi1 TIDAK null
Ekspresi3: nilai yang dikembalikan jika ekspresi1 bernilai null
|
penggunaan nvl2 tanpa null |
|
penggunaan nvl2 dengan null |
3. NULL IF
Fungsi NULLIF ini akan membandingkan nilai dari ekspresi1 dan ekspresi2. Jika nilai dari ekspresi1 dan ekspresi2 bernilai SAMA, maka fungsi NULLIF akan mengembalikan nilai NULL, namun jika nilai dari ekspresi1 dan ekspresi2 berbeda maka fungsi NULLIF akan mengembalikan nilai ekspresi1. Namun fungsi NULLIF ini tidak bisa membandingkan ekspresi ataupun nilai yang berupa null karena akan menghasilkan eror pada program. Adapun syntax dan contoh dari penggunaan NULLIF ini ditunjukkan sebagai berikut
NULLIF(arg1, arg2)
4. COALESCE
Fungsi COALESCE akan mengembalikan ekpresi pertama yang BUKAN null dari beberapa ekspresi yang ada. Jika ternyata semua ekspresi bernilai null maka fungsi COALESCE akan mengembalikan null. Pada fungsi COALESCE ini, database akan mengevaluasi setiap nilai dan menentukan apakah dia null atau tidak, tanpa mengevaluasi semua ekspresi sebelum menentukan apakah salah satu dari semua ekspresi tersebut adalah null. Adapun syntax dan contoh penggunaan dari COALESCE ditunjukkan sebagai berikut:
COALESCE( ekspresi1, ekspresi2, ... ekspresi _n )
COALESCE( ekspresi1, ekspresi2, ... ekspresi _n )
Dimana :
Ekspresi1 : mengembalikan ekspresi1 jika ia BUKAN null
Ekspresi2 : mengembalikan ekspresi2 jika ekspresi1 = null dan ekspresi2 tidak null
Ekspresi_n: mengembalikan ekspresi_n jika ekspresi_n-1 = null dan ekspresi_n tidak null
|
penggunaan coalsesce |
5. CASE
Fungsi CASE ini merupakan alternatif penggunaan IF-THEN-ELSE pada pemrograman. Sehingga dengan menggunakan fungsi CASE, kita dapat memberikan hasil berdasarkan pemilihan kondisi yang telah ditetapkan. Adapun syntax penulisa CASE secara umum ditunjukkan sebagai berikut:
CASE [ ekspresi ]
WHEN kondisi_1 THEN hasil_1
WHEN kondisi_2 THEN hasil_2
...
WHEN kondisi_n THEN hasil_n
ELSE hasil_
END
Dalam CASE ini terbagi menjadi 2 jenis yaitu:
1. Nilai skalar
Pada jenis ini setelah pernyataan CASE dituliskan langsung ekspresi dari pengkondisian yang dibutuhkan.
Contoh penggunaan :
select customer_id,
case status
when status = 'A' then 'ACTIVE'
when status = 'I' then 'INACTIVE'
else 'UNKNOWN'
end
from customers;
2. Predikat subqueri dalam bentuk pencarian
Pada jenis ini setelah pernyataan CASE tidak dituliskan ekspresi dari kondisi, melainkan dituliskan setelah penulisan WHEN, oleh sebab itu pada jenis ini disebut dengan pencarian. Kelebihan dari jenis ini adalah kita bisa menggunakannya pada kondisi yang tidak sama (gabungan dari beberapa kondisi yang tidak saling berhubungan). Adapun contoh dari jenis ini ditunjukkan sebagai berikut:
select customer_id,
case
when status = 'A' then 'ACTIVE'
when status = 'I' then 'INACTIVE'
else 'UNKNOWN'
end
from customers;
Bisa dilihat perbedaan penulisan CASE
Catatan dalam penggunaan CASE:
1. Penggunaan ELSE merupakan optional (bisa digunakan bisa juga tidak)
2. Jika tidak ada satupun kondisi yang memenuhi, maka CASE akan mengembalikan NULL
3. Case bisa digunakan menggunakan logika AND dan OR juga.
Adapun contoh dari penggunaan CASE ditunjukkan pada gambar berikut:
6. DECODE
Sama seperti penggunaan CASE , DECODE juga merupakan alternative penggunaan kondisional IF-THEN-ELSE. DECODE bekerja menggunakan nilai, kolom, dan ekspresi dengan semua jenis data. Adapun syntax penulisan DECODE ditunjukkan sebagai berikut:
DECODE (ekspresi,kolom_cari,hasil [,kolom_cari,hasil]... [, default])
Fungsi DECODE akan membandingkan ekspresi terhadap nilai dari kolom_cari berdasarkan urutan penulisan. Jika ditemukan kesamaan antara ekspresi dan pencarian, maka akan dikembalikan hasil yang bersesuaian. Jika tidak ditemukan kesamaan, maka akan dikembalikan nilai default namun jika default tidak dibuat maka oracle akan mengembalikan nilai null. Berikut dijelaskan contoh penggunaan DECODE
|
penggunaan decode |
7. GREATEST
Fungsi GREATEST ini akan mengembalikan nilai terbesar dari beberapa ekspresi dengan tipe data yang sama. Jika ekspresi berupa angka maka semua kumpulan ekspresi harus dalam bentuk angka, dan begitu juga jika dalam bentuk string maka semua ekspresi harus dalam bentuk string. Adapun syntax dari
GREATEST( nilai_1, nilai_2, ... nilai_n )
Contoh penggunaan GREATEST ditunjukkan pada gambar berikut:
8. LEAST
Kebalikan dari fungsi GREATEST fungsi LEAST akan mengembalikan nilai paling kecil dari sekumpulan nilai ekspresi dengan tipe data yang sama pula. Adapun syntax dari LEAST dan contohnya ditunjukkan pada gambar berikut:
LEAST(nilai _1, nilai _2, ... nilai _n )
|
penggunaan least pada variabel number (angka) |
|
penggunaan least pada variabel varchar2 (karakter) |