Home > Oracle > Bermain Angka dengan Oracle bagian I

Bermain Angka dengan Oracle bagian I

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.

Add to FacebookAdd to DiggAdd to Del.icio.usAdd to StumbleuponAdd to RedditAdd to BlinklistAdd to TwitterAdd to TechnoratiAdd to Yahoo BuzzAdd to Newsvine

Categories: Oracle Tags: , , , , , , , , , , , , , ,
  1. December 30, 2011 at 12:24 pm

    kk kl mau mengalikan kolom 1 dengan kolom 2 query ny seperti apa kak, coz aku coba2 gak perna bisa error melu2…
    makasih ya kk

    • December 31, 2011 at 3:51 pm

      Maksudnya seperti ini “SELECT (COLUMN1 * COLUMN2) AS COLUMNALIAS FROM SOMETABLE”

  2. November 2, 2013 at 3:14 am

    Reblogged this on Knowledge and commented:
    Beberapa Fungsi dalam Oracle

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: