Home » » Bermain Angka dengan Oracle bagian I

Bermain Angka dengan Oracle bagian I

Written By Unknown on Rabu, 30 Januari 2013 | 21.37


Sesuai dengan judulnya, sekarang kita akan bermain-main dengan angka dalam Oracle. Pada tutorial ini kita akan melihat bagaimana penggunaan fungsi-fungsi untuk manipulasi angka, tentunya hanya fungsi-fungsi yang paling umum dipakai saja yang akan saya jelaskan penggunaannya. Sebelum kita mulai terlebih dahulu kita persiapkan data yang akan digunakan selama tutorial ini, ada dua tabel yang akan kita pakai, tabel mat dan tabel temp. 
Pertama kita akan melihat penggunaan fungsi untuk nilai tunggal, untuk itu kita membutuhkan data dari tabel mat sebagai contoh. Dari jendela SQL*Plus kita ketikan perintah untuk membuat tabel mat:
CREATE TABLE mat(
name varchar2(20) NOT NULL,
above number(8,3) NOT NULL,
below number(8,3) NOT NULL,
empty number(8,3)
);
Lalu kita isikan datanya
INSERT INTO mat(name, above, below) VALUES(‘whole number’, 11, -22);
INSERT INTO mat(name, above, below) VALUES(‘low decimal’, 33.33, -44.44);
INSERT INTO mat(name, above, below) VALUES(‘mid decimal’, 55.5, -55.5);
INSERT INTO mat(name, above, below) VALUES(‘high decimal’, 66.666, -77.777);
Dalam Oracle, kolom bertipe number dapat tidak memiliki nilai. Ketika dia dinyatakan sebagai NULL, maka itu berarti datanya tidak ada (bukan bernilai nol). Pertama kita akan melihat penggunaan fungsi matematika dasar (penjumlahan, pengurangan, perkalian, pembagian). Ketikan perintah berikut dan perhatikan hasilnya
SELECT name, above, below, empty, above + below AS tambah, above – below AS kurang, above * below AS kali, above / below AS bagi FROM mat
Kemudian fungsi kita terapkan lagi tetapi dengan kolom yang bernilai NULL, yaitu empty, silahkan dicoba
SELECT name, above, below, empty, above + empty AS tambah, above – empty AS kurang, above * empty AS kali, above / empty AS bagi FROM mat
Tidak ada hasil yang ditampilkan bukan. Ini karena NULL tidak dapat diikut sertakan dalam perhitungan, semua operasi perhitungan dengan NULL akan bernilai NULL.
NVL(NULL VaLue substitusion)
Di atas saya katakan bahwa NULL merepresentasikan ketidak hadiran data. Lalu bagaimana kita dapat bekerja dengan NULL ini. Salah satu fungsi yang bekerja dengan NULL adalah NVL. Gunanya adalah menggantikan NULL dengan nilai tertentu. Misal dalam suatu tabel muncul NULL dan kita ingin menggantikan NULL ini dengan suatu angka. Bentuk umumnya adalah
NVL(nilai, pengganti)
Argumen nilai ini kita ganti dengan nama kolom dimana NULL muncul, lalu pengganti adalah nilai yang akan menggantikan NULL. Setiap NULL yang muncul dalam kolom tersebut akan diganti dengan pengganti.
NVL2
Mirip seperti NVL, NVL2 juga bekerja dengan NULL. Bentuk umumnya
NVL2(ekspresi1, ekspresi2, ekspresi3)
ekspresi1 adalah ekepresi yang dinilai apakah NULL atau tidak, jika NULL maka ekspresi2 yang dikembalikan, jika tidak maka ekspresi3 yang dikembalikan. Mirip dengan operator ternary dalam Java :) .
ABS (ABSolute)
Fungsi ini akan memberikan nilai posotif, dengan kata lain dia akan membuat bilangan negatif menjadi positif
SELECT ABS(-22.5) AS hasil FROM dual
CEIL
Fungsi ini akan mengembalikan bilangan bulat terkecil yang lebih besar dari nilai yang ditentukan. Perhatikan perbedaan hasilnya jika bilangan yang dimasukan adalah negatif.
SELECT CEIL(2.4) FROM dual
SELECT CEIL(-2.4) FROM dual
FLOOR
Fungsi ini akan mengembalikan bilangan bulat terbesar yang lebih kecil dari nilai yang ditentukan. Perhatikan perbedaan hasilnya jika bilangan yang dimasukan adalah negatif.
SELECT FLOOR(2.4) FROM dual
SELECT FLOOR(-2.4) FROM dual
MOD dan REMAINDER
Kedua fungsi ini sama kegunaannya, yaitu untuk mencari sisa hasil bagi dari kedua bilangan. Bentuk umumnya
MOD(nilai_yang_dibagi, pembagi)
REMAINDER(nilai_yang_dibagi, pembagi)
MOD akan bernilai nol jika bilangan yang dibagi adalah negatif atau nol. MOD juga bernilai nol jika bilangan pembagi adalah 1.
SELECT MOD(15, 4) FROM dual
SELECT REMAINDER(15, 4) FROM dual
SELECT MOD(15, 0) FROM dual
SELECT MOD(15, -4) FROM dual
SELECT MOD(4.1, 0.3) FROM dual
SELECT MOD(-15, 3) FROM dual
SELECT MOD(5, 1) FROM dual
POWER
Fungsi ini digunakan untuk memangkatkan bilangan yang satu dengan bilangan kedua. Bentuk umumnya
POWER(nilai1, nilai2)
nilai2 dapat berasal dari bilangan real apa saja.
SELECT POWER(2, 3) FROM dual
SELECT POWER(2, 3.3) FROM dual
SELECT POWER(2, -3) FROM dual
SELECT POWER(-2, 3) FROM dual
SQRT (SQRuare Root)
Fungsi ini akan menghitung nilai akar pangkat 2 dari suatu bilangan. Perlu diperhatikan, Oracle tidak mendukung bilangan imajiner. Oleh karena itu bilangan yang dijadikan sebagai parameter dalam fungsi ini haruslah positif.
SELECT SQRT(64) FROM dual
SELECT SQRT(66.666) FROM dual
EXP, LN, LOG
Untuk urusan bisnis fungsi-fungsi ini jarang sekali digunakan, tapi di dunia sains, fungsi ini memegang peranan penting. EXP adalah fungsi yang akan memangkatkan bilangan e (2.71818283..) dengan bilangan tertentu. LN adalah fungsi yang akan menghitung logaritma dengan basis bilangan e (logaritma natural). LOG adalah fungsi untuk menghitung logaritma dengan basis yang ditentukan. Bentuk umumnya
EXP(nilai)
LN(nilai)
LOG(basis, nilai)
Supaya lebih jelas langsung saja praktekan perintah-perintah berikut
SELECT EXP(2) FROM dual
SELECT LN( 7.3890561) FROM dual
SELECT LOG(10, 1000) FROM dual
ROUND dan TRUNC
Dua fungsi ini gunanya sama hanya berbeda cara kerja. Kegunaannya adalah memotong angka sesuai presisi yang diinginkan. Bentuk umumnya
ROUND(nilai, presisi)
TRUNC(nilai, presisi)
Supaya lebih jelas langsung saja praktekan perintah berikut
SELECT name, above, below, ROUND(above, 2) AS rnd1, ROUND(below, 2) AS rnd2, TRUNC(above, 2) AS trnc1, TRUNC(below, 2) AS trnc2 FROM mat
Fungsi ROUND dan TRUNC yang kita gunakan di atas memakai presisi 2, artinya angka akan dipotong sampai menjadi 2 angka dibelakang koma. Tapi lihat perbedaan hasil yang diberikan pada baris terakhir. Kita perhatikan untuk fungsi ROUND angka 66.666 dan -77.777 akan dipotong dengan mengalami pemotongan dan pembulatan menjadi 66.67 dan -77.78. Bilangan desimal di atas atau sama dengan 5 akan dibulatkan ke atas, jika di bawah akan dihilangkan (0.66 menjadi 0.67, 0.77 menjadi 0.78). Sedangkan untuk hasil TRUNC hanya mengalami pemotongan.
Jika presisi bernilai nol, maka artinya bilangan desimalnya akan dihilangkan. Untuk lebih jelas silahkan perhatikan hasil dari perintah berikut
SELECT name, above, below, ROUND(above, 0) AS rnd1, ROUND(below, 0) AS rnd2, TRUNC(above, 0) AS trnc1, TRUNC(below, 0) AS trnc2 FROM mat
Perhatikan pembulatan yang terjadi (55.5 menjadi 56, 33.33 menjadi 33, 66.666 menjadi 67)
Dapat juga dipakai bila nilai presisi negatif
SELECT name, above, below, ROUND(above, -1) AS rnd1, ROUND(below, -1) AS rnd2, TRUNC(above, -1) AS trnc1, TRUNC(below, -1) AS trnc2 FROM mat
SIGN
Fungsi ini gunanya untuk mengetahui tanda dari suatu bilangan. Perhatikan contoh
SELECT SIGN(25) FROM dual
SELECT SIGN(-25) FROM dual
SELECT SIGN(0) FROM dual
SIN, SINH, COS, COSH, TAN, TANH, ACOS, ATAN ATAN2 dan ASIN
Semua fungsi ini adalah fungsi yang berhubungan dengan trigonometri. Untuk SIN, COS dan TAN nilai yang digunakan sebagai parameter adalah nilai derajat dalam radian (pi/180)
SELECT SIN(45*3.141592655/180) FROM dual
SELECT COS(45*3.141592655/180) FROM dual
SELECT TAN(45*3.141592655/180) FROM dual
Untuk penjelasan mengenai fungsi-fungsi yang digunakan dalam grup angka silahkan lihat bagian dua
Share this article :
 
Support : support@masterfreelance.com | +62 - 857 - 1061 - 2210 | 327E8DA0
Copyright © 2013. MasterFreelance Blog - All Rights Reserved
Jl. Satria 5 No 27 - 28
Bojong Nangka , Kelapa Dua - Tangerang
15821, Banten - Indonesia