Anda di halaman 1dari 18

4.

SINGLE-ROW FUNCTIONS

Obyektif :
Setelah menyelesaikan bahasan ini, mahasiswa dapat melakukan hal-hal berikut :
1. Menggambarkan berbagai tipe dari functions yang tersedia pada SQL.
2. Menggunakan character, number, dan date funtions pada statemen SELECT.
3. Menggambarkan kegunaan conversion functions.

4.1. SQL Functions

Gambar 4.1. SQL Functions

Functions adalah fitur dari SQL yang dapat digunakan untuk melakukan hal-hal seperti:
• Melakukan perhitungan pada data
• Modifikasi item data yang bersifat individual
• Manipulasi output untuk kelompok baris
• Format tanggal dan nomor untuk tampilan
• Mengubah tipe data kolom

SQL functions dapat menerima argument dan selalu mengembalikan nilai.


Catatan: Sebagian besar functions yang dijelaskan dalam bahasan ini adalah khusus untuk
versi Oracle tentang SQL.

Ada 2 tipe berbeda pada functions :


• Single-row functions.
• Multiple-row functions.

27
Gambar 4.2. Two Types of SQl Functions

4.1.1. Single-Row Functions


Fungsi ini dijalankan hanya pada satu baris dan menghasilkan satu hasil per baris. Ada tipe
yang berbeda dari single-row functions. Pelajaran ini mencakup :
• Character.
• Number.
• Date.
• Conversion.

4.1.2. Multiple-Row Functions


Fungsi ini menggunakan kelompok baris untuk memberi satu hasil setiap kelompok baris.
• Dapat berupa nested.

function_name (column| expression, [arg1, arg2, . . .])

4.2. Single-Row Functions

Gambar 4.3. Single-Row Functions

Single-row functions digunakan untuk menggunakan data. Dapat juga menerima satu atau
lebih argumen dan menghasilkan satu nilai tiap baris yang dihasilkan query. Argumen dapat
berupa :

28
1. User-supplied constant.
2. Nilai variabel.
3. Nama kolom.
4. Ekspresi.

Fitur pada single-row functions :


1. Bertindak pada tiap baris yang dihasilkan query.
2. Satu hasil per baris.
3. Dapat menghasilkan nilai data dari tipe yang berbeda dari yang direkomendasi.
4. Dapat menggunakan satu atau lebih argumen.
5. Dapat digunakan pada klausa SELECT, WHERE dan ORDER BY; dapat diulang.

Pada sintaks :
function_name adalah nama fungsi.
column adalah nama kolom database.
expression adalah untai karakter atau ekspresi yang dikalkulasi.
arg1, arg2 adalah argumen yang akan digunakan oleh fungsi.

Pada pembahasan single-row functions ini mencakup :


1. Fungsi Character : menerima masukan karakter dan dapat menghasilkan nilai
karakter dan bilangan.
2. Fungsi Number :menerima masukan angka dan menghasilkan nilai angka.
3. Fungsi Date : dijalankan pada nilai tipedata tanggal (Semua date functions
menghasilkan nilai tipedata tanggal kecuali
MONTHS_BETWEEN functions, yang menghasilkan
bilangan).
4. Fungsi Conversion : mengubah nilai dari satu tipedata ke lainnya.
5. Fungsi General :
- NVL functions
- DECODE functions

4.2.1. Fungsi Character

Gambar 4.4. Character Functions

29
Single-row character functions menerima data karakter sebagai masukan dan dapat
menghasilkan nilai karakter dan bilangan. Fungsi character dapat dibagi menjadi :
• case conversion functions
• character manipulation functions

4.2.2. Fungsi Mengubah Bentuk Huruf


LOWER, UPPER, dan INITCAP adalah 3 case conversion functions.
• LOWER : Mengubah untai karakter huruf campuran atau huruf besar menjadi huruf
kecil.
• UPPER : Mengubah untai karakter huruf campuran atau huruf kecil menjadi huruf
besar.
• INITCAP : Mengubah huruf pertama dari setiap kata menjadi huruf besar dan sisanya
huruf kecil.

SQL> SELECT „The job title for „|| INITCAP(ename) || „ is „


2 || LOWER(job) AS “EMPLOYEE DETAILS”
3 FROM emp;

Menampilkan nomor pegawai, nama dan nomor departemen bagi pegawai Blake

SQL> SELECT empno, ename, deptno


2 FROM emp
3 WHERE „blake‟;
no rows selected

SQL> SELECT empno, ename, deptno


2 FROM emp
3 WHERE ename = UPPER („blake‟);

EMPNO ENAME DEPTNO


----------------- ---------------- --------------------
7689 BLAKE 30

Contoh di atas menampilkan nomor pegawai, nama dan nomor departemen bagi pegawai
BLAKE. Klausa WHERE pada sintaks SQL yang pertama merinci pada nama pegawai
‘blake’. Selama data dalam tabel EMP dalam keadaan uppercase, nama ‘blake’ tidak
menemukan kecocokan pada tabel EMP sehingga tidak ada baris yang ditampilkan.

Klausa WHERE pada sintaks yang kedua menspesifikasikan bahwa nama pegawai dalam
tabel EMP dibandingkan pada ‘blake’, yang sudah di uppercase. Selama kedua nama dalam
keadaan uppercase, maka ditemukan kecocokan dan satu baris ditampilkan.

30
Klausa WHERE dapat ditulis ulang dengan cara berikut untuk menampilkan hasil yang sama:
... WHERE ename = ‘BLAKE’

Nama yang ditampilkan pada output akan muncul sesuai dalam database. Untuk
menampilkan nama dengan huruf pertama kapital, gunakan fungsi INITCAP pada klausa
SELECT.

SQL> SELECT empno, INITCAP (ename), deptno


2 FROM emp
4 WHERE ename = UPPER (‘blake’);

4.2.3. Fungsi Manipulasi Karakter


CONCAT, SUBSTR, LENGTH, INSTR, LPAD, dan TRIM adalah enam character
manipulation functions yang termasuk pada pelajaran ini.
• CONCAT : Menggabungkan nilai (yaitu dibatasi menggunakan dua parameter dengan
CONCAT).
• SUBSTR : Mengambil string yang panjangnya ditentukan.
• LENGTH : Menunjukkan panjang dari string dengan angka.
• INSTR : Menemukan posisi numerik dari karakter yang disebutkan.
• LPAD : Mengisi nilai karakter rata kiri.
Catatan : RPAD character manipulation function mengisi nilai karakter rata kanan.
• TRIM : Memotong bagian atas atau menarik karakter (atau keduanya) dari untai
karakter. Jika trim_character atau trim_source adalah karakter harfiah, harus
disertakan dalam tanda kutip satu.

SQL> SELECT ename, CONCAT (ename, job) , LENGTH


(ename) ,
2 INSTR (ename, „A‟)
3 FROM emp
4 WHERE SUBSTR (job,1,5) = „SALES‟;

4.2.4. Fungsi Number


Fungsi number menerima masukan numerik dan menghasilkan nilai numerik. Seksi ini
terdapat beberapa fungsi number.

31
Menggunakan Fungsi ROUND

SQL> SELECT ROUND(45.923,2), ROUND(45.923,0),


2 ROUND(45.923,-1)
3 FROM DUAL;

ROUND(45.923,2) ROUND(45.923,0) ROUND(45.923,-1)


--------------- --------------- ----------------
45.92 46 50

Fungsi ROUND membulatkan kolom, ekspresi atau nilai ke n desimal. Jika argumen kedua 0
atau hilang, nilai dibulatkan ke desimal nol. Jika argumen kedua 2, nilai dibulatkan ke dua
desimal. Sebaliknya, jika argumen kedua -2, nilai dibulatkan ke dua desimal ke kiri. Fungsi
ROUND juga dapat digunakan dengan date functions. Akan ada beberapa contoh dalam
pelajaran ini.

Menggunakan Fungsi TRUNC


Fungsi TRUNC memotong kolom, ekspresi atau nilai ke n desimal. Fungsi TRUNC bekerja
dengan argumen yang mirip dengan fungsi ROUND. Jika argumen kedua 0 atau hilang, nilai
dipotong ke nol desimal. Jika argumen kedua 2, nilai dipotong ke dua desimal. Kebalikannya,
jika argumen kedua –2, nilai dipotong ke dua desimal ke kiri. Seperti fungsi ROUND, fungsi
TRUNC dapat digunakan dengan fungsi date.

SQL> SELECT TRUNC(45.923,2), TRUNC(45.923,0),


3 TRUNC(45.923,-1)
3 FROM DUAL;

TRUNC(45.923,2) TRUNC(45.923,0) TRUNC(45.923,-1)


--------------- --------------- ----------------
45.92 45 40

Menggunakan Fungsi MOD


Menghitung sisa rasio gaji terhadap komisi bagi semua pegawai yang pekerjaannya salesman.

SQL> SELECT ename, sal, comm, MOD(sal, comm)


2 FROM emp
3 WHERE job = „SALESMAN‟;
Fungsi MOD menemukan sisa nilai1 dibagi nilai2. Contoh di atas menghitung sisa rasio gaji
terhadap komisi bagi semua pegawai yang pekerjaannya salesman.

32
4.2.5. Bekerja dengan Date

1. Oracle menyimpan date pada format numerik internal : abad, tahun, bulan, tanggal, jam,
menit dan detik.
2. Format date adalah DD-MON-YY.
3. SYSDATE adalah fungsi yang menghasilkan tanggal dan waktu.
4. DUAL adalah tabel dummy yang digunakan untuk melihat SYSDATE.

Format Date Oracle


Oracle menyimpan date pada format numerik internal, mewakili abad, tahun, bulan, tanggal,
jam, menit dan detik. Tampilan awal dan format masukan untuk tanggal adalah DD-MON-
YY. Tanggal Oracle yang valid antara January 1, 4712 BC dan December 31, 9999 A.D.

Sysdate
SYSDATE adalah fungsi tanggal yang menghasilkan tanggal dan waktu sekarang.
Contohnya, menampilkan tanggal sekarang dengan memilih SYSDATE dari tabel.

Dual
Tabel DUAL dimiliki oleh pengguna SYS dan dapat diakses oleh semua pengguna. Berisi
satu kolom, DUMMY, dan satu baris dengan nilai X. Tabel DUAL sangat berguna jika ingin
menghasilkan nilai hanya sekali - , nilai konstanta, pseudocolumn, atau ekspresi yang tidak
diambil dari tabel data pengguna. Tabel DUAL umumnya digunakan bagi klausa sintaks
SELECT yang tidak lengkap, karena klausa SELECT dan FROM , dan beberapa perhitungan
tidak perlu dipilih dari tabel yang aktual.

Contoh
Tampilkan tanggal menggunakan tabel DUAL.

SQL> SELECT SYSDATE


2 FROM DUAL;

Aritmatika Date
Sejak database menyimpan tanggal sebagai angka, selain dapat melakukan perhitungan
menggunakan operator aritmatika seperti penambahan dan pengurangan, juga dapat
menambah dan mengurangi angka konstan seperti tanggal.

33
Tabel 4.1. Daftar Operasi Aritmatika Tanggal

Operasi Hasil Deskripsi


Tanggal + angka Tanggal Menambahkan sejumlah hari ke
tanggal
Tanggal – angka Tanggal Mengurangi sejumlah hari dari
tanggal
Tanggal – tanggal Jumlah hari Mengurangi satu tanggal dengan
lainnya
Tanggal + angka / 24 Tanggal Menambahkan sejumlah jam ke
tanggal

Menggunakan Operator Aritmatika Date

Contoh di atas menunjukkan nama dan jumlah minggu bekerja bagi semua pegawai pada
departemen 10. Perintah SQL tersebut mengurangi tanggal sekarang (SYSDATE) dari
tanggal mereka mulai bekerja dan hasilnya dibagi 7 untuk menghasilkan jumlah minggu
seorang pegawai telah bekerja.

Fungsi Date
Fungsi date beroperasi pada tanggal Oracle. Semua fungsi date menghasilkan nilai dengan
tipedata DATE kecuali MONTHS_BETWEEN yang menghasilkan nilai numerik.
1. MONTHS_BETWEEN(date1, date2): Menemukan jumlah bulan antara date1 dan date2.
Hasilnya dapat positif atau negatif. Jika date1 kemudian daripada date2, hasilnya positif;
jika date1 lebih dulu daripada date2, hasilnya negatif. Bagian yang tidak integer dari hasil
menunjukkan bagian bulan.
2. ADD_MONTHS(date, n) : Menambahkan sejumlah n bulan ke tanggal. Nilai n harus
integer dan dapat negatif.
3. NEXT_DAY(date, ‘char’) : Menemukan tanggal berikut dari tanggal yang ditentukan
4. LAST_DAY(date) : Menemukan tanggal dari hari terakhir dari bulan yang berisi
date.
5. ROUND(date[,’fmt’]) : Menghasilkan date yang dibulatkan ke unit yang ditentukan
oleh model format fmt. Jika model format fmt diabaikan, date dibulatkan ke hari terdekat.

34
6. TRUNC(date[,’fmt’]) : Menghasilkan date dengan bagian waktu dari hari yang
dipotong ke unit yang ditentukan olah model format fmt. Jika model format fmt diabaikan,
date dipotong ke hari terdekat.

Contoh :

• MONTHS_BETWEEN ('01-SEP-95','11-JAN-94') 19.6774194


• ADD_MONTHS ('11-JAN-94',6) '11-JUL-94'
• NEXT_DAY ('01-SEP-95','FRIDAY') '08-SEP-95'
• LAST_DAY ('01-SEP-95') '30-SEP-95'

Semua pegawai yang bekerja kurang dari 200 bulan, tampilkan nomor pegawai, tanggal
kontrak, jumlah bulan bekerja, tanggal review 6 bulan, Jum'at pertama, dan hari terakhir pada
bulan dikontrak.

SQL> SELECT empno, hiredate,


2 MOTHS_BETWEEN(SYSDATE,hiredate) TENURE,
3 ADD_MONTHS(hiredate, 6) REVIEW
4 NEXT_DAY(hiredate,'FRIDAY'), LAST_DAY(hiredate)
5 FROM emp
6 WHERE MONTHS_BETWEEN(SYSDATE, hiredate)<200;

Menggunakan Fungsi Date

• ROUND ('25-JUL-95','MONTH') 01-AUG-95


• ROUND ('25-JUL-95','YEAR') 01-JAN-96
• TRUNC ('25-JUL-95','MONTH') 01-JUL-95
• TRUNC ('25-JUL-95','YEAR') 01-JAN-95

Fungsi ROUND dan TRUNC dapat digunakan untuk nilai nomor dan tanggal. Ketika
digunakan dengan tanggal, fungsi ini membulatkan atau memotong ke model format yang
telah ditentukan. Oleh karena itu, dapat dilakukan pembulatan tanggal ke tahun atau bulan
terdekat.

Contoh
Bandingkan tanggal kontrak semua pegawai yang mulai tahun 1982. Tampilkan nomor
pegawai, tanggal kontrak, dan bulan mulai menggunakan fungsi ROUND dan TRUNC.
SQL> SELECT empno, hiredate, ROUND(hiredate, 'MONTH'),
TRUNC(hiredate, 'MONTH')
3 FROM emp
5 WHERE hiredate like '%1982';

35
4.2.6. Fungsi Conversion

Perubahan tipedata dapat dilakukan secara implisit oleh Oracle Server atau secara eksplisit
oleh pengguna. Perubahan eksplisit tipedata dilakukan dengan menggunakan fungsi
conversion. Fungsi conversion mengubah nilai dari satu tipedata ke lainnya. Umumnya,
bentuk nama fungsi mengikuti ketentuan datatype TO datatype. Tipedata pertama merupakan
tipedata masukan; tipedata terakhir merupakan keluaran.

Perubahan Implisit Tipedata


Untuk penugasan, Oracle Server otomatis dapat mengubah :

Tabel 4.2. Perubahan data karena penugasan


Dari Ke
VARCHAR2 atau VAR NUMBER
VARCHAR2 atau VAR DATE
NUMBER VARCHAR2
DATE VARCHAR2

Penugasan berhasil jika Oracle Server dapat mengubah nilai tipe data yang digunakan pada
penugasan ke sasaran penugasan.

Perubahan Implisit Tipedata


Untuk evaluasi ekspresi, Oracle Server otomatis dapat mengubah :

Tabel 4.3. Perubahan data karena ekspresi

Dari Ke
VARCHAR2 atau VAR NUMBER
VARCHAR2 atau VAR DATE

Secara umum, Oracle Server menggunakan aturan bagi ekspresi sewaktu perubahan tipedata
dibutuhkan pada tempat yang tidak tercakup aturan penugasan perubahan.

36
Catatan : perubahan CHAR ke NUMBER berhasil hanya jika untai karakter mewakili
bilangan bukan alfabet. Perubahan CHAR ke DATE berhasil hanya jika untai karakter
memiliki format DD-MON-YY.

Perubahan Eksplisit Tipe data

Tabel 4.4. Fungsi untuk mengubah nilai dari satu tipedata ke lainnya.

Fungsi Kegunaan
TO_CHAR(number|d Mengubah nilai bilangan atau tanggal ke untai
ate,[fmt],[nlsparams]) karakter VARCHAR2 dengan model format fmt.
Perubahan bilangan :
Parameter nlsparams menetapkan karakter berikut,
yang dihasilkan elemen format bilangan.
• Decimal character
• Group separator
• Local currency symbol
• International currency symbol
Jika nlsparams atau parameter lain diabaikan, fungsi
ini menggunakan nilai parameter awal sesi.
Perubahan tanggal :
Parameter nlsparams menetapkan bahasa pada nama
bulan dan hari dan singkatan yang dihasilkan. Jika
parameter diabaikan, fungsi ini menggunakan bahasa
tanggal awal sesi.
TO_NUMBER(char,[f Mengubah untai karakter berisi angka ke bilangan
mt],[nlsparams]) pada format yang ditentukan oleh model format
opsional fmt.
Parameter nlsparams memiliki kegunaan yang sama
pada fungsi ini seperti pada fungsi TO_CHAR untuk
perubahan bilangan.
TO_DATE(char,[fmt], Mengubah untai karakter yang mewakili tanggal ke
[nlsparams) nilai tanggal menurut penetapan fmt. Jika fmt
diabaikan, formatnya DD-MON-YY
Parameter nlsparams memiliki kegunaan yang sama
pada fungsi ini seperti pada fungsi TO_CHAR untuk
perubahan tanggal.

Fungsi TO_CHAR dengan Tanggal

TO_CHAR(date, 'fmt')

37
Menampilkan Tanggal Pada Format Tertentu
Sebelumnya, semua tanggal Oracle ditampilkan pada format DD-MON-YY. Fungsi
TO_CHAR mengizinkan untuk mengubah tanggal dari format awal ke format yang
ditentukan.

Panduan
1. Model format harus diapit dengan tanda kutip tunggal dan case sensitive.
2. Model format dapat berupa sembarang elemen format tanggal yang valid. Pastikan untuk
memisahkan tanggal dari model format dengan koma.
3. Nama hari dan bulan secara otomatis diisi dengan kosong .
4. Untuk menghapus isian kosong atau menyembunyikan nol di depan, gunakan mode isian
elemen fm.
5. Mengatur lebar tampilan dari karakter yang dihasilkan dengan perintah SQL*Plus
COLUMN.
6. Lebar kolom yang dihasilkan defaultnya 80 karakter.

SQL> SELECT empno, TO_CHAR(hiredate, 'MM/YY') Month_Hired


2 FROM emp
3 WHERE ename 'BLAKE';

Elemen Model Format Tanggal


Tabel 4.5. Elemen model format tanggal
Elemen Deskripsi
SCC atau CC Abad, tanggal BC dengan awalan S
Year pada YYYY atau Tahun, tanggal BC dengan awalan S
SYYYY
YYY atau YY atau Y Tiga, dua atau satu gigit tahun terakhir
Y,YYY Tahun dengan koma pada posisi ini
|YYY, |YY, |Y, | Empat, tiga, dua atau satu digit tahun berdasar
standar ISO
SYEAR atau YEAR Bacaan tahun, tanggal BC dengan awalan S
BC atau AD Indikator BC atau AD
B.C. atau A.D. Indikator BC atau AD dengan periode
Q Seperempat tahun
MM Bulan, dua digit
MONTH Nama bulan diisi dengan kosong sampai panjang
sembilan karakter
MON Nama bulan, singkatan tiga huruf
RM Bulan Roma Ameral
WW atau W Minggu tahun atau bulan
DDD atau DD atau D Hari per tahun, bulan atau minggu
DAY Nama hari diisi kosong sampai panjang 9 karakter

38
DY Nama hari, singkatan tiga huruf
J Hari Julia, jumlah hari sejak 31 Desember 4713 BC

Elemen Model Format Tanggal


• Format elemen waktu yang merupakan bagian dari hari
HH24:MI:SS AM 15:45:32 PM
• Menambah untai karakter dengan diapit tanda kutip dua
DD "of" MONTH 12 of OCTOBER
• Akhiran bilangan dari bacaan bilangan
ddspth fourteenth

Gunakan format yang ada pada tabel berikut untuk menampilkan informasi waktu dan
merubah angka ke ejaan bilangan.

Tabel 4.6. Format waktu


Elemen Deskripsi
AM atau PM Indikator Meridian
A.M. atau P.M. Indikator Meridian dengan periode
HH atau HH12 atau Jam per hari atau jam (1..12) atau jam (0..23)
HH24
MI Menit (0..59)
SS Detik (0..59)
SSSSS Detik setelah tengah malam (0-86399)
/.. Tanda baca ? pada hasil
"of the" Untai berkutip ? pada hasil
TH Bilangan urutan (contoh, DDTH untuk 4TH)
SP Ejaan bilangan (contoh, DDSP untuk FOUR)
SPTH atau THSP Ejaan bilangan urutan (contoh DDSPTH untuk
FOURTH)

Fungsi TO_CHAR dengan Tanggal

Contoh
SQL> SELECT ename,
2 TO_CHAR(hiredate, 'fmDdspth "of" Month YYY
fmHH:MT:SS AM')
3 HIREDATE
4 FROM emp;

39
Fungsi TO_CHAR dengan Bilangan

TO_CHAR(number, 'fmt')

Ketika bekerja dengan bilangan seperti untai karakter, sudah seharusnya mengubah bilangan
tersebut ke tipedata karakter menggunakan fungsi TO_CHAR, yang menterjemahkan nilai
NUMBER ke VARCHAR2.

Elemen Format Bilangan


Jika ingin mengunakan bilangan ke tipedata karakter, dapat menggunakan elemen berikut
seperti yang ditunjukkan pada table 4.7.

Tabel 4.7. Elemen format bilangan


Elemen Deskripsi Contoh Hasil
9 Posisi numerik (jumlah dari 9 999999 1234
menentukan lebar tampilan)
0 Menampilkan nol di depan 099999 001234
$ Tanda dolar $999999 $1234
L Simbol mata uang lokal L999999 FF1234
. Tanda desimal pada tempat yang 999999.99 1234.00
ditentukan
, Koma pada tempat yang 999,999 1,234
ditentukan
MI Tanda minus ke kanan (nilai 999999MI 1234-
negatif)
PR Bilangan negatif dalam kurung 999999PR <1234>
EEEE Notasi ilmiah (format harus 99.999EEE 1.234E+0
V menetapkan empat E) E9999V99 3
Dikalikan 10n kali (n = jumlah 9 123400
setelah V)
B Menampilkan nilai 0 sebagai B9999.99 1234.00
kosong, bukan 0

Menggunakan Fungsi TO_CHAR dengan Bilangan

40
Pedoman
• Oracle Server menampilan untai dari tanda pagar (#) pada tempat semua bilangan yang
digitnya melebihi jumlah digit yang disediakan pada model format.
• Oracle Server membulatkan nilai desimal yang disimpan ke jumlah tempat desimal
yang disediakan pada model format.

Fungsi TO_NUMBER dan TO_DATE

• Mengubah untai karakter ke format bilangan menggunakan fungsi TO_NUMBER

TO_NUMBER(char[,'fmt'])

• Mengubah untai karakter ke format tanggal menggunakan fungsi TO_DATE

TO_DATE(char[,'fmt'])

Fungsi TO_NUMBER dan TO_DATE


Fungsi yang mengubah untai karakter ke bilangan atau tanggal. Untuk menyelesaikan tugas
ini, menggunakan fungsi TO_NUMBER atau TO_DATE.

Contoh
SQL> SELECT ename, hiredate
2 FROM emp
3 WHERE hiredate=TO_DATE(February 22, 1981', Month dd,
YYY');

Tabel 4.8. Format tanggal RR


Tahun Sekarang Tanggal Format RR Format YY
1995 27-OCT-95 1995 1995
1996 27-OCT-17 2017 1917
2001 27-OCT-17 2017 2017
2001 27-OCT-96 1996 2095

Jika dua digit tahun yang ditentukan :


0-49 50-99
Jika dua Tanggal yang dihasilkan Tanggal yang dihasilkan ada
digit tahun 0-49 ada pada abad sekarang pada satu abad sebelum
sekarang sekarang
adalah :
Tanggal yang dihasilkan Tanggal yang dihasilkan ada
50-99 ada pada satu abad setelah pada abad sekarang
sekarang

41
Format tanggal RR hampir sama dengan elemen YY, tapi dia mengizinkan untuk menetapkan
abad yang berbeda.

Fungsi NVL
Mengubah null ke nilai aktual
• Tipedata yang dapat digunakan adalah tanggal, karakter dan bilangan.
• Tipedata harus cocok
- NVL(comm,0)
- NVL(hiredate,'01-JAN-97')
- NVL(job,'No Job Yet')
Untuk mengubah nilai null ke nilai aktual, gunakan fungsi NVL.
Sintaksnya
NVL (expr1,expr2)
Dimana :
expr1 adalah nilai awal atau ekspresi yang mungkin mengandung null
expr2 adalah nilai target untuk perubahan null

Fungsi NVL digunakan untuk mengubah sembarang tipedata, tetapi nilai yang dihasilkan
selalu sama dengan tipedata expr1.

Perubahan NVL untuk Bermacam Tipe data

Tabel 4.9. Perubahan NVL untuk bermacam tipe data

Tipedata Contoh Perubahan


NUMBER NVL(number_column,9)
DATE NVL(date_column,'01-JAN-95')
CHAR atau VARCHAR2 NVL(character_column,'Unavailable')

Untuk menghitung kompensasi tahunan semua pegawai, perlu mengalikan gaji bulanan
dengan 12 dan kemudian menambahkan komisi.

SQL> SELECT ename, sal, comm, (sal*12)+comm


2 FROM emp;

4.3. Fungsi DECODE


Memudahkan penyelidikan bersyarat dengan mengerjakan pekerjaan statement CASE atau
IF-THEN-ELSE

42
DECODE(col/expression, search1, result1
[, search2, result2, …,]
[, default])

Cara fungsi DECODE menguraikan kode ekspresi mirip dengan logika IF-THEN-ELSE yang
digunakan di bermacam bahasa. Fungsi DECODE menguraikan kode expression setelah
membandingkannya ke tiap nilai search. Jika ekspresi sama dengan search, dihasilkan result.

Pada statemen SQL di atas, kode nilai JOB diuraikan. Jika JOB adalah ANALYST, gaji naik
10%; jika JOB adalah CLERK, gaji naik 15%; jika JOB addalah MANAGER, gaji naik 20%.
Bagi semua pekerjaan lain, tidak ada kenaikan gaji.

Fungsi Nesting

• Fungsi Single-row dapat di nest ke sembarang level.


• Fungsi bernest dinilai dari level terdalam ke level terendah

Fungsi Single-row dapat dimasukkan ke sembarang kedalaman. Nested Function dievaluasi


dari level paling dalam ke level paling luar. Beberapa contoh berikut untuk menunjukkan
fleksibilitas fungsi ini.

Contoh di bawah menunjukkan kepala perusahaan, yang bukan manajer. Evaluasi statemen
SQL melibatkan 2 langkah :
4.2.6.1. Nilai fungsi di dalam untuk mengubah nilai bilangan ke untai karakter.
- Result1 = TO_CHAR(mgr)
4.2.6.2. Nilai fungsi di luar untuk mengganti nilai null dengan untai teks.
- NVL(Result1, ‘No Manager’)

43
Semua ekspresi menjadi kepala kolom karena tidak ada alias kolom yang diberikan.

Contoh :
Tampilkan tanggal Jum’at berikutnya , yaitu enam bulan dari tanggal kontrak. Tanggal yang
dihasilkan harus menunjukkan Jum’at, 12 Maret 1982. Urutkan hasil berdasar tanggal
kontrak.

SQL> SELECT TO_CHAR(NEXT_DAY(ADD_MONTHS


2 (hiredate, 6), „FRIDAY‟),
3 „fmDay, Month ddth, YYYY‟)
4 “Next 6 Month Review”
5 FROM emp
6 ORDER BY hiredate;

44

Anda mungkin juga menyukai