Fungsi baris tunggal atau single row functions adalah fungsi yang dapat kita gunakan
untuk setiap baris data. Fungsi-fungsi yang disediakan oleh Oracle adalah sebagai berikut:
1. Fungsi Karakter
2. Fungsi Angka
3. Fungsi Tanggal
4. Fungsi Konversi
5. Fungsi Lain
1. Fungsi Karakter
1.1. CHR(n)
Name
INDRA
1.3. INITCAP(column|expression)
Initcap
Indra Armansyah
1.4. LENGTH(column|expression)
Length
15
1.5. LOWER(column|expression)
Lowercase
indra armansyah
1.6. UPPER(column|expression)
Uppercase
INDRA ARMANSYAH
Fungsi NVL() digunakan untuk mengkonversi nilai null baik dari suatu column
maupun expression menjadi sebuah nilai baru yang kita inginkan. Perhatikan contoh
berikut ini:
Substr
Indra
Substr
Armansyah
1.9. REPLACE(column|expression1, expression2, expression3)
Replace
20-JUL-1902
Pada contoh diatas kita mengganti string ‘2002′ yang terkandung di dalam ‘20-JUL-
2002′ menjadi ‘1902′ sehingga hasilnya menjadi ‘20-JUL-1902′.
2. Fungsi Angka
2.1. ROUND(column|expression[,n])
Round 1 Round 2
19.7 19.8
2.2. TRUNC(column|expression[,n])
Fungsi TRUNC() digunakan untuk membulatkan kebawah atas nilai column atau
expression sebanyak n desimal di belakang koma. Perhatikan contoh berikut ini:
Trunc 1 Trunc 2
19.7 19.7
2.3. MOD(m,n)
MOD(3,2) MOD(3,0)
13
2.4. POWER(m,n)
SELECT POWER(3,2)
FROM dual;
POWER(3,2)
9
3. Fungsi Tanggal
SELECT MONTHS_BETWEEN(sysdate,’01-OCT-02′)
FROM dual;
3.2. ADD_MONTHS(date, n)
3.3. NEXT_DAY(date,’char’)
Fungsi NEXT_DAY() digunakan untuk mencari tanggal dari hari pertama (char)
setelah date. Perhatikan contoh berikut ini:
SELECT NEXT_DAY(’01-OCT-02′,2)
FROM dual;
3.4. LAST_DAY(date)
Fungsi LAST_DAY() digunakan untuk mencari tanggal terakhir dari bulan date.
Perhatikan contoh berikut ini:
SELECT LAST_DAY(’01-OCT-01′)
FROM dual;
LAST_DAY(
31-OCT-01
3.5. ROUND(date[,’fmt’])
Fungsi ROUND() digunakan untuk membulatkan date. Jika fmt tidak disebutkan
maka akan dibulatkan ke hari terdekat. Perhatikan contoh berikut ini:
Round Date
01-JAN-93
3.6. SYSDATE
3.7. TRUNC(date[,’fmt’])
Fungsi TRUNC() digunakan untuk membulatkan date. Jika fmt tidak disebutkan
maka akan dibulatkan ke hari terdekat. Perhatikan contoh berikut ini:
Trunc Date
01-JAN-92
4. Fungsi Konversi
4.1. TO_CHAR(number|date[,’fmt’])
Jika kita asumsikan bahwa tanggal sistem adalah 01-OCT-01 maka hasil query
adalah sebagai berikut:
TO_CHAR(SYSDATE,’
01 OCTOBER 2001
4.2. TO_DATE(char[,’fmt’])
SELECT TO_DATE(’01-OCT-02′,’DD-MON-YY’)
FROM dual;
TO_DATE(’
01-OCT-02
Fungsi TO_DATE berguna jika kita ingin menginputkan data atau mencari
berdasarkan data bertipe tanggal, namun format tanggal yang kita miliki berbeda dengan
format default yang ada (DD-MON-YY). Penjelasan lengkap dapat diikuti pada bagian
Interpretasi Tanggal.
4.3. TO_NUMBER(char)
SELECT TO_NUMBER(’5′) * 5
FROM dual;
TO_NUMBER(’5′)*5
25
5. Fungsi Lain
5.1. GREATEST(expr1[,expr2]…)
5.2. LEAST(expr1[,expr2]…)
LEAST
HAROLD
5.3. USER
Fungsi USER digunakan untuk menampilkan nama user yang sedang terkoneksi
dengan database Oracle. Perhatikan contoh berikut ini:
USER UID
INDRA 2367
5.4. USERENV(option)
5.5. VSIZE()
Name Bytes
Velasquez 9
Ngao 4
Nagayama 8
Interpretasi Tanggal
Kita perlu berhati-hati jika bekerja dengan data bertipe tanggal, karena Oracle
menginterpretasikan tahun sesuai dengan tahun pada tanggal sistem.
Tahun
Interpreta
Data Siste
si
m
01-
>=200 01-OCT-
OC
0 2001
T-01
01-
< 01-OCT-
OC
2000 1901
T-01
Perhatikan contoh berikut:
SELECT TO_CHAR(TANGGAL,’DD-MON-YYYY’)
FROM coba;
TANGGAL
01-OCT-2074
Kita dapat menggunakan dua alternatif pemecahan untuk mengatasi permasalahan ini:
1. Mengubah tanggal sistem dari sistem operasi sehingga memiliki tahun < 2000
(tidak disarankan)
2. Menggunakan fungsi TO_DATE
Pada dasarnya kita harus memberitahukan kepada Oracle dengan jelas berapa
sesungguhnya tahun yang kita maksud, 1974 atau 2074, agar data dapat
diinterpretasikan dengan benar. Perhatikan perintah insert yang sudah dimodifikasi
berikut:
SELECT TO_CHAR(TANGGAL,’DD-MON-YYYY’)
FROM tanggal;
TANGGAL
01-OCT-1974
Format Tanggal
Format Waktu
Format Lain
Format Angka
9 : Posisi numerik (jumlah angka 9 menunjukkan maksimal panjang data yang dapat
ditampilkan). Contoh 999999 untuk hasil 1234
0 : Menambahkan awalan 0. Contoh 099999 untuk hasil 01234
$ : Menambahkan awalan dollar. Contoh $999999 untuk hasil $1234
L : Menambahkan simbol local currency. Contoh L999999 untuk hasil L1234
. : Menambahkan titik pada posisi tertentu. Contoh 999999.99 untuk hasil 1234.00
, : Menambahkan koma pada posisi tertentu. Contoh 999,999 untuk hasil 1,234
MI : Menambahkan tanda negatif di sebelah kanan angka. Contoh 999999MI
untuk hasil 1234-
PR : Contoh 999999PR untuk hasil <1234>
EEEE : Notasi untuk operasi scientific. Contoh 99.999EEEE untuk hasil 1,234E+03
V : Mengalikan dengan 10 n kali (n menunjukkanjumlah angka 9 setelah V). Contoh
9999V99 untuk hasil 123400
B : Menampilkan nilai nol sebagai blank. Contoh B9999,99 untuk hasil 1234,00
6. Latihan
Tampilkan nama lengkap pegawai dengan huruf kecil, inisial pegawai dengan huruf
depan kapital, dan jabatan pegawai dengan huruf kapital, khusus untuk pegawai dengan
jabatan vice president. Tampilkan nama lengkap pegawai dengan judul VP, inisial pegawai
dengan judul USERID, dan jagatan pegawai dengan judul TITLE.
Tampilkan nama depan dan nama belakang pegawai yang memiliki nama belakang PATEL.
Tampilkan nama dan negara pelanggan dengan nilai kredit GOOD. Tampilkan nama
dan negara pelanggan dalam satu kolom dipisahkan spasi, beri judul CUSTOMER.
Tampilkan nama produk dan panjang dari nama produk tersebut untuk produk yang
tiga huruf pertamanya adalah “Ace”.
Tampilkan nama produk dan panjang dari nama produk tersebut untuk produk yang
tiga huruf terakhirnya adalah “Bar”.
Tampilkan nama belakang, jabatan pegawai dan kode departemen dimana pegawai
tersebut bekerja khusus untuk pegawai yang bekerja pada departemen dengan kode genap.
SELECT sysdate
FROM sys.dual;
Tampilkan nama belakang dan masa kerja pegawai yang bekerja pada departemen
dengan kode 43, dengan ketentuan bahwa masa kerja adalah tanggal sejak pegawai tersebut
bekerja hingga sekarang. Tampilkan masa kerja tersebut dalam hitungan minggu dan beri
judul dengan WEEKS. Tampilkan urut berdasarkan nama belakang pegawai.
Tampilkan kode pegawai, tanggal pegawai tersebut mulai bekerja, lama pegawai
tersebut bekerja hingga sekarang dalam hitungan bulan dengan judul TENURE, dan enam
bulan berikut sejak pegawai tersebut bekerja dengan judul REVIEW, khusus untuk pegawai
dengan masa kerja hingga sekarang lebih dari 100 bulan.
Tampilkan nomor order dan tanggal order untuk semua order yang ditangani oleh
sales representative dengan kode 11. Tampilkan tanggal order dengan format MM/YY dan
beri judul ORDERED.
Tampilkan nama belakang pegawai dan tanggal pegawai tersebut mulai bekerja.
Untuk tanggal pegawai mulai bekerja tampilkan dengan format sehingga akan tampak seperti
7 of February 1991 dan beri judul HIREDATE.
Tampilkan kembali soal diatas dimana tanggal pegawai mulai bekerja akan tampak
seperti Sevententh of February 1991 08:00:00 AM dan beri judul HIREDATE.
SELECT last_name, TO_CHAR(start_date,’fmDdspth “of” Month YYYY
fmHH:MI:SS AM’) HIREDATE
FROM employee
WHERE start_date LIKE ‘%91′;
Tampilkan pesan yang mengindikasikan nomor dan total order, khusus untuk order
yang dikirimkan pada tanggal 21 September 1992. Tampilkan dengan judul NOTE.
Tampilkan nomor, total dan tanggal untuk order dengan tanggal September 7, 1992.
Konversilah string tanggal pada soal ini menjadi format tanggal, sehingga dapat dilakukan
pencarian terhadap data yang dimaksud.
Tampilkan gabungan nama belakang dan jabatan pegawai dengan judul Vice
President, khusus untuk pegawai dengan jabatan vice president, dengan ketentuan nama
belakang ditampilkan dengan huruf kapital. Hilangkan karakter VP pada jabatan.
Tampilkan nama belakang dari pimpinan perusahaan, yaitu pegawai yang tidak
memiliki atasan, sehingga akan tampak seperti:
BOSS
Tampilkan tanggal dari hari Jum’at enam bulan berikutnya setelah tanggal order.
Hasilnya akan tampak seperti : Friday, March 12th, 1993. Tampilkan dengan judul New 6
Month Review, dan urutkan berdasarkan tanggal order.
Tampilkan nama belakang dan jabatan pegawai, sehingga tampak seperti berikut:
EMPLOYEE
Biri(Warehouse Manager)
Catchpole(Warehouse Manager)
……………………
Tampilkan nama belakang pegawai, tanggal pegawai tersebut mulai bekerja, tanggal
peninjauan gaji pegawai yang merupakan hari Senin pertama setelah enam bulan seorang
pegawai bekerja. Tampilkan tanggal peninjauan gaji dengan judul REVIEW dan dengan
format seperti Eight of May 1992.
Tampilkan gabungan nama belakang, gaji bulanan, dan gaji impian pegawai dengan
judul Dream Salaries, dengan catatan nama belakang pegawai ditampilkan dalam huruf
kapital, sedangkan gaji bulanan dan gaji impian ditampilkan dalam format $99,999. Gunakan
fungsi-fungsi pada latihan-latihan sebelumnya, dan tampilkan hasil query tersebut dengan
format: