Single Row Function
Single Row Function
Tujuan
Setelah menyelesaikan pelajaran ini, anda akan dapat melakukan hal berikut : Menjelaskan beragam tipe-tipe dari fungsi-fungsi yang ada di SQL Menggunakan fungsi-fungsi karakter, angka dan tanggal dalam pernyataan SELECT Menjelaskan penggunaan conversion functions
Tujuan
Fungsi-fungsi membuat blok query dasar menjadi lebih cepat, dan fungsi-fungsi tersebut digunakan untuk memanipulasi nilai-nilai data. Ini adalah bagian pertama dari dua pelajaran yang mengupas fungsi-fungsi. Bagian pertama ini berpusat pada fungsi-fungsi single-row functions karakter, angka dan tanggal, seperti adanya fungsi-fungsi tersebut yang digunakan untuk merubah data dari satu tipe ke tipe lainnya ( sebagai contoh, konversi dari data karakter ke data angka).
Fungsi-Fungsi SQL
Fungsi-fungsi SQL Fungsi-fungsi sangat mendukung fitur pada SQL. Fungsi-fungsi tersebut dapat digunakan untuk melakukan hal berikut: Melakukan perhitungan-perhitungan pada data Memodifikasi item-item data individual Memanipulasi keluaran dari kelompok baris-baris Format untuk tampilan tanggal dan angka-angka Konversi tipe data-tipe data kolom Fungsi-fungsi SQL kadang-kadang mengambil argument-argumen dan selalu mengembalikan suatu nilai. Catatan : Kebanyakan fungsi-fungsi yang diuraikan di dalam pelajaran ini dikhususkan untuk SQL versi ORACLE.
Fungsi-Fungsi SQL (lanjutan) Ada dua tipe dari fungsi-fungsi : Single-rows functions (fungsi-fungsi baris tunggal) Multiple-row functions (fungsi-fungsi banyak baris) Single-Row Functions Fungsi-fungsi ini hanya digunakan pada baris-baris tunggal dan mengembalikan satu hasil per baris. Ada tipe-tipe berbeda dari single-row functions. Pelajaran ini mencakup hal-hal berikut : Character (karakter) Number (angka) Date (tanggal) Conversion (konversi) General (umum) Multiple-row Functions Fungsi-fungsi dapat memanipulasi kelompok dari baris-baris untuk memberi suatu hasil baris-baris per kelompok. Fungsi-fungsi ini dikenal juga sebagai group functions (dibahas pada pelajaran selanjutnya). Catatan : Untuk informasi lebih rinci dan daftar lengkap dari fungsi-fungsi yang ada dan syntax, lihat Oracle SQL Reference.
Single-Row Functions
Single-row Functions : Memanipulasi item-item data Menerima argument-argumen dan mengembalikan satu nilai Aksi pada setiap baris yang dikembalikan Mengembalikan satu hasil per baris Memungkinkan mengubah tipe data Dapat di nested (bersarang) Menerima argument-argumen yang dapat berupa suatu kolom atau suatu ekspresi
Single-Row Functions
Fungsi-Fungsi Character
Character Functions
Single-row character functions menerima data karakter sebagai masukan dan dapat mengembalikan baik nilai-nilai karakter maupun angka. Character functions dapat dibagi menjadi : Case-manipulation functions Character-manipulation functions Function Melakukan LOWER(column/expression) Mengkonversi nilai-nilai karakter huruf menjadi lowercase (huruf kecil) UPPER(column/expression) Mengkonversi nilai-nilai karakter huruf menjadi uppercase (huruf besar) INITCAP(column/expression) Mengkonversi nilai-nilai alpha karakter menjadi uppercase untuk huruf pertama dari tiap kata; semua huruf-huruf lain lowercase CONCAT(column1/expressio1, Menggabungkan nilai karakter pertama ke karakter kedua colum2/expression2) : sama dengan operator penggabungan ( || ) SUBSTR (column/expression, Menghasilkan karakter-karakter tertentu dari nilai karakter m[,n]) dimulai pada posisi karakter ke-m, ke- n panjang karakter (jika m adalah negatif, dihitung mulai dari akhir nilai karakter. Jika n dihilangkan, menghasilkan semua karakter sampai akhir dari rangkaian.) Catatan : Fungsi-fungsi yang didiskusikan dalam pelajaran ini adalah hanya beberapa dari fungsifungsi yang ada.
LPAD (column /expression, n,'string') RPAD (column /expression, n,'string') TRIM (leading/trailing/both, trim_character FROM trim_source)
Fungsi-Fungsi Case-Manipulation
Fungsi-fungsi ini merubah bentuk pada karakter-karakter string :
Case-Manipulation Functions
LOWER, UPPER, dan INITCAP adalah tiga case-conversion functions (fungsi-fungsi perubahan bentuk). LOWER : Konversi mixed-case (bentuk campuran) atau karakter-karakter string huruf besar ke huruf kecil UPPER : Konversi mixed-case atau karakter-karakter string huruf kecil ke huruf besar INITCAP : Konversi huruf pertama setiap kata ke huruf besar dan huruf-huruf selanjunya ke huruf kecil SELECT the job id for ||UPPER(last_name)|| is ||LOWER(job_id) AS EMPLOYEE DETAILS FROM employees; EMPLOYEE DETAILS The job id for KING is ad_pres The job id for KOCHHAR is ad_vp The job id for DE HAAN is ad_vp . . . The job id for HIGGINS is ac_mgr The job id for GIETZ is a ac_account
20 rows selected.
Fungsi-Fungsi Character-Manipulation
Fungsi-fungsi manipulasi karakter-karakter string :
Fungsi-Fungsi Character-Manipulation
CONCAT, SUBSTR, LENGTH, INSTR, LPAD, RPAD, dan TRIM adalah suatu fungsi-fungsi manipulasi karakter yang dibahas dalam pelajaran ini. CONCAT : Menggabungkan bersama nilai-nilai ( Anda dibatasi untuk menggunakan dua parameter pada CONCAT.) SUBSTR : Memotong suatu rangkaian dari panjang tertentu LENGTH : Menampilkan panjang dari suatu rangkaian sebagai suatu nilai numerik INSTR : Menemukan posisi numerik dari suatu karakter nama LPAD : Mengisi nilai karakter right-justified (perataan kanan) RPAD : Mengisi nilai karakter left-justified (perataan kiri) TRIM : Memotong karakter-karakter bagian awal atau bagian akhir (atau kedua-duanya) dari suatu rangkaian karakter ( jika trim_character atau trim_source adalah suatu karakter literal, Anda harus mengapitnya didalam tanda petik tunggal.) Catatan: Anda dapat menggunakan fungsi-fungsi seperti UPPER dan LOWER dengan ampersand substitution. Sebagai contoh, gunakan UPPER ('& job_title') sehingga user tidak bisa memasukkan suatu nama pekerjaan dalam suatu bentuk tertentu.
Fungsi-Fungsi Number
ROUND : Pembulatan nilai ke desimal tertentu TRUNC :Memotong nilai ke desimal tertentu MOD :Mengembalikan sisa bagi
Fungsi-Fungsi Number
Fungsi-fungsi Number menerima input numerik dan mengembalikan nilai-nilai numerik. Pada bagian ini dibahas beberapa fungsi-fungsi number. Function ROUND (column | expression, n) Purpose Membulatkan kolom, ekspresi, atau nilai posisi ken desimal atau, jika n dihilangkan, tidak ada posisi desimal ( Jika n adalah negatif, angka-angka di kiri dari desimal dibulatkan.) Memotong kolom, ekspresi, atau nilai posisi ke-n desimal atau, jika n dihilangkan, n default-nya nol Mengembalikan sisa dari m yang dibagi oleh n
TRUNC
(column | expression, n)
MOD (m, n)
Catatan : Daftar ini hanya berisi beberapa dari number function yang tersedia . Untuk informasi lebih lanjut, lihat "Number Functions" di Oracle SQL Reference. .
DUAL adalah dummy table (tabel contoh) yang dapat anda gunakan untuk melihat hasil-hasil dari fungsi-fungsi dan perhitungan-perhitungan.
Fungsi ROUND
Fungsi ROUND membulatkan kolom, ekspresi, atau nilai posisi ke-n desimal. Jika argumen kedua adalah 0 atau hilang, suatu nilai dibulatkan ke posisi nol desimal. Jika argumen kedua adalah 2, nilai dibulatkan ke posisi dua decimal . Sebaliknya, jika argumen kedua adalah -2, nilai dibulatkan ke posisi dua desimal ke kiri (pembulatan ke unit yang paling dekat dengan 10). Fungsi ROUND juga dapat digunakan dengan date function (fungsi-fungsi tanggal). Selanjutnya Anda akan melihat contoh-contoh dalam pelajaran ini. DUAL Table DUAL table dimiliki oleh user SYS dan dapat diakses oleh semua user. DUAL table berisi satu kolom, DUMMY, dan satu baris dengan nilai X. DUAL table bermanfaat ketika Anda ingin mengembalikan suatu nilai sekali saja (sebagai contoh, nilai dari suatu konstanta, pseudocolumn (kolom maya), atau ekspresi yang bukan berasal dari suatu tabel dengan data user). DUAL table secara umum digunakan untuk melengkapi sintak klausa SELECT, sebab baik klausa SELECT dan klausa FROM mandatory (bersifat perintah) , dan beberapa perhitungan-perhitungan tidak perlu memilih dari tabel-tebel aktual.
Fungsi TRUNC
Fungsi TRUNC memotong kolom, ekspresi, atau nilai posisi ke-n desimal. Fungsi TRUNC bekerja dengan argument-argumen yang sama untuk fungsi ROUND. Jika argumen kedua adalah 0 atau hilang, nilai dipotong ke posisi nol desimal. Jika argumen kedua adalah 2, nilai dipotong ke posisi dua desimal. Sebaliknya, jika argumen kedua adalah -2, nilai dipotong ke posisi dua desimal ke kiri. Jika argumen kedua adalah 1, nilai dipotong ke posisi satu desimal ke kiri. Seperti fungsi ROUND, fungsi TRUNC dapat digunakan dengan date function.
Fungsi MOD
MOD function akan menemukan suatu sisa dari argumen pertama dibagi dengan argumen kedua. Contoh pada slide menghitung sisa dari penghasilan setelah dibagi dengan 5,000 untuk semua pegawai yang job ID-nya adalah SA_REP. Catatan : MOD function sering digunakan untuk menentukan bahwa suatu nilai adalah ganjil atau genap.
CENTURY YEAR 19 87
MONTH 06
DAY 17
HOUR 17
MINUTE 10
SECOND 43
Abad-abad dan Tahun 2000 Saat suatu record pada suatu kolom tanggal disisipkan ke dalam suatu tabel, suatu informasi abad diambil dari fungsi SYSDATE. Meskipun demikian, ketika suatu kolom tanggal ditampilkan di layar, bagian abad tidak ditampilkan (secara default). Secara internal tipe data DATE selalu menyimpan informasi tahun sebagai empat digit angka : dua digit untuk abad dan dua digit untuk tahun. Sebagai contoh, database Oracle menyimpan tahun dengan cara 1987 atau 2004, dan tidak seperti 87 atau 04.
Fungsi SYSDATE
SYSDATE adalah fungsi tanggal yang mengembalikan tanggal dan waktu server database saat ini. Anda dapat menggunakan SYSDATE seperti Anda ingin menggunakan setiap nama kolom lain. Sebagai contoh, Anda dapat menampilkan tanggal saat ini dengan memilih SYSDATE dari suatu tabel. Biasanya tabel untuk memilih SYSDATE dari suatu tabel contoh disebut tabel DUAL. Contoh Menampilkan tanggal saat ini menggunakan tabel DUAL. SELECT SYSDATE FROM DUAL; SYSDATE 28-SEP-01
Aritmatika Dates
Karena database menyimpan tanggal sebagai angka-angka, Anda dapat melakukan perhitungan menggunakan operator aritmatika seperti penambahan dan pengurangan. Anda dapat menambahkan dan mengurangkan konstanta angka begitu pula pada tanggal. Anda dapat melakukan operasi-operasi berikut : Operasi date + number date number date date date + number/24 Hasil Date Date Number of days Date Keterangan Menambahkan suatu angka dari hari ke suatu tanggal Mengurangikan suatu angka dari hari dari suatu tanggal Mengurangkan suatu tanggal dari tanggal yang lain Menambahkan suatu angka dari jam ke suatu tanggal
Fungsi-Fungsi Date
Dates Functions
Date function bekerja pada tanggal tanggal Oracle. Semua date function mengembalikan suatu nilai dengan tipe data DATE kecuali MONTHS_BETWEEN,yang mengembalikan nilai numerik. MONTHS_BETWEEN (date1, date2) : Mencari jumlah bulan diantara date1 dan date2. Hasilnya bisa jadi positif atau negatif. Jika date1 lebih awal daripada date2, hasilnya adalah positif ; jika date1 lebih awal daripada date2, hasilnya adalah negatif . Sebagian dari hasil bukan bilangan bulat (noninteger) menunjukkan suatu bagian dari bulan. ADD_MONTHS (date, n) : Menambahkan n jumlah suatu bulan kalender ke date. Nilai dari n harus bilangan bulat (integer) dan bisa negatif. NEXT_DATE (date, char) : (char) setelah date menemukan suatu tanggal dari suatu hari tertentu pada suatu minggu. Nilai dari char bisa angka yang mewakili suatu hari atau suatu karakter string. LAST_DAY (date) : Mencari hari terakhir dari suatu tanggal dalam suatu bulan yang berisi date. ROUND (date[,fmt] ) : Mengembalikan pembulatan date ke suatu unit yang ditentukan oleh model format fmt. Jika model format fmt dihilangkan, date dibulatkan ke hari terdekat. TRUNC (date[,fmt] ) : Mengembalikan date dengan bagian suatu waktu dari suatu hari yang dipotong ke unit yang ditentukan oleh model format fmt. Jika model format fmt dihilangkan , date dipotong ke hari terdekat. Daftar ini adalah sebagian dari date function yang ada. Model-model format selanjut dibahas dalam pelajaran ini. Contoh-contoh dari model-model format adalah bulan dan tahun.
Conversion Functions
Conversion Functions
Disamping tipe data-tipe data Oracle, kolom-kolom dari tabel-tabel di dalam Oracle dapat didefinisikan menggunakan tipe data-tipe data ANSI, DB2, dan SQL/DS. Meskipun demikian, server Oracle secara internal merubah tipe data-tipe data yang sama dengan tipe data-tipe data Oracle. Dalam beberapa kasus, server Oracle menggunakan data dari suatu tipe data dimana server Oracle memperkirakan data dari suatu tipe data yang lain. Ketika ini terjadi, server Oracle dapat secara otomatis mengubah suatu data ke tipe data yang diperkirakan. Perubahan tipe data ini bisa jadi dilakukan secara implisit (implicitly) oleh server Oracle atau secara eksplisit (explicitly) oleh user. Konversi-konversi tipe data implisit bekerja menurut aturan-aturan yang dijelaskan dalam slide berikutnya. Konversi-konversi tipe data eksplisit dilakukan dengan menggunakan conversion functions. Conversion functions merubah suatu nilai dari suatu tipe data ke tipe data lain. Umumnya, bentuk dari nama-nama fungsi mengikuti konvensi (kesepakatan) data type TO data type. Tipe data yang pertama adalah tipe data input; tipe data yang kedua adalah output. Catatan : Meskipun disediakan konversi tipe data implisit, Anda diijinkan melakukan konversi tipe data eksplisit untuk memastikan kebenaran pernyataan SQL Anda.
Format model : Harus diapit oleh tanda petik tunggal case-sensitive Boleh ditambahkan beberapa elemen format tanggal yang valid Memiliki suatu elemen fm untuk memindahkan bagianbagian kosong atau menggeser awalan kosong Dipisahkan dari nilai tanggal dengan suatu koma
Format-Format Lain
Elemen /., of the Deskripsi Memberikan tanda baca pada hasil Memberikan tanda kutip rangkaian pada hasil
Perhatikan bahwa bulan ditentukan menggunakan format model; dengan kata lain, bulan diawali huruf besar dan selanjutnya menggunakan huruf kecil.
Berikut adalah beberapa dari elemen-elemen format yang dapat Anda gunakan pada suatu fungsi TO_CHAR untuk menampilkan sebuah nilai bilangan sebagai suatu karakter :
Pedoman-Pedoman
Server Oracle menampilkan suatu string (rangkaian) sejumlah tanda (#) di tempat dari seluruh bilangan yang melampaui digit-digit bilangan pada digit-digit yang disediakan dalam model format. Server Oracle membulatkan nilai desimal yang disimpan ke bilangan pada posisi desimal yang disediakan dalam model format
Fungsi-fungsi ini memiliki sebuah modifier (pengubah) fx. Modifier ini menentukan kesesuaian yang pasti pada argumen karakter dan model format tanggal dari suatu fungsi TO_DATE.
Format Tanggal RR
No rows selected
Fungsi-Fungsi General
Fungsi-fungsi berikut ini bekerja dengan beberapa tipe data dan berhubungan dengan penggunaan null-null : NVL (expr1, expr2) NVL (expr1, expr2, expr3) NULLIF (expr1, expr2) COALESCE (expr1, expr2,. . ., exprn)
Fungsi-Fungsi General
Fungsi-fungsi ini bekerja dengan beberapa tipe data dan berhubungan dengan penggunaan nilai-nilai null dalam daftar ekspresi. FUNGSI NVL NVL2 Keterangan Mengubah suatu nilai null menjadi nilai actual. Jika expr1 bukan null, NVL2 mengembalikan expr2. Jika expr1 null, NVL2 mengembalikan expr3. Argument expr1 dapat berupa beberapa tipe data. Membandingkan dua ekspresi dan mengembalikan null jika sama; mengembalikan ekspresi pertama jika tidak sama. Mengembalikan ekspresi bukan null yang pertama dalam daftar ekspresi.
NULLIF COALESCE
Catatan : Untuk informasi lebih lanjut mengenai ratusan fungsi-fungsi yang ada, lihat Functions dalam Oracle SQL Reference.
Fungsi NVL
Mengubah nilai null menjadi nilai aktual : Tipe data tipe data yang dapat digunakan adalah tanggal, karakter, dan angka. Tipe data-tipe data harus sesuai : - NVL (commission_pct, 0) - NVL (hire_date, 01-Jan-97) - NVL (job_id, No Job Yet)
NVL Function
Untuk mengubah nilai null menjadi nilai aktual, gunakan fungsi NVL. Sintak NVL (expr1, expr2) Dalam sintak : expr1 adalah nilai asal atau ekspresi yang mungkin mengandung null. expr2 adalah nilai yang diinginkan untuk mengubah null. Anda dapat menggunakan fungsi NVL untuk mengubah beberapa tipe data, tetapi nilai kembalian selalu sama dengan tipe data dari expr1. Konversi-konversi NVL untuk beberapa tipe data Tipe Data NUMBER DATE CHAR atau VARCHAR2 Contoh konversi NVL (number_column, 9) NVL (date_column, 01-Jan-95) NVL(character_column,Unavailable)
.2 .3 .2
Perhatikan bahwa kompensasi tahunan yang dihitung hanya untuk pegawai yang mendapatkan komisi. Jika beberapa nilai kolom dalam ekspresi adalah null, maka hasilnya adalah null. Untuk menghitung nilai-nilai dari semua pegawai, Anda harus mengubah nilai null menjadi angka sebelum menggunakan operator aritmatika. Contoh pada slide, fungsi NVL digunakan untuk mengubah nilai null menjadi nol.
Contoh pada slide menampilkan, panjang dari nama depan dalam tabel EMPLOYEES dibandingkan dengan panjang dari nama belakang dalam tabel EMPLOYEES. Ketika panjang nama-nama tidak sama, maka panjang dari nama depan akan ditampilkan. Catatan : Fungsi NULLIF secara logika sama dengan ekspresi CASE berikut ini. Ekspresi CASE didiskusikan dalam halaman berikutnya : CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END
Ekspresi-Ekspresi Kondisional
Menyediakan penggunaan logika IF-THEN-ELSE dalam pernyataan SQL Menggunakan dua metode : - Ekspresi CASE - Fungsi DECODE
Ekspresi-Ekspresi Kondisional
Dua metode yang digunakan untuk implementasi pemrosesan kondisi (logika IF_THEN_ELSE) dalam pernyataan SQL adalah ekspresi CASE dan fungsi DECODE. Catatan : Ekspresi CASE sesuai dengan ANSI SQL. Fungsi DECODE adalah khusus untuk sintak Oracle.
Ekspresi CASE
Kemudahan-kemudahan pencarian kondisional dengan melakukan pekerjaan pada suatu pernyataan IF-THEN-ELSE :
Ekspresi CASE
Ekspresi CASE mengijinkan Anda untuk menggunakan logika IF-THEN-ELSE dalam pernyataan SQL tanpa meminta prosedur-prosedur. Dalam ekspresi CASE sederhana, server Oracle mencari pasangan WHEN . . . THEN pertama dimana expr adalah sama dengan comparison_expr dan mengembalikan return_expr. Jika tidak ada dari pasangan WHEN . . . THEN sesuai dengan kondisi ini, dan jika sebuah klausa ELSE ada, maka server Oracle akan mengembalikan else_expr. Jika tidak, server Oracle akan mengembalikan null. Anda tidak bisa menentukan literal NULL untuk semua return_exprs dan else_expr. Semua ekspresi-ekspresi (expr, comparison_expr dan return_expr) harus bertipe data sama, yang bisa jadi CHAR, VARCHAR2, NCHAR, atau NVARCHAR2.
Fungsi DECODE
Kemudahan-kemudahan pencarian kondisional dengan melakukan suatu pekerjaan pada suatu ekspresi CASE atau suatu pernyataan IF-THEN-ELSE :
Fungsi DECODE
Fungsi DECODE mengkodekan suatu ekspresi dalam suatu cara yang sama dengan logika IF-THENELSE yang digunakan dalam beragam bahasa. Fungsi DECODE mengkodekan expression setelah membandingkannya dengan setiap nilai search. Jika ekspresi sama dengan search, result akan dikembalikan. Jika nilai default dihilangkan, suatu nilai null akan dikembalikan dimana nilai yang dicari tidak sesuai dengan beberapa nilai hasil.
Ringkasan
Dalam pelajaran ini, Anda telah belajar mengenai bagaimana : Melakukan perhitungan data menggunakan fungsi-fungsi. Memodifikasi item-item data individu menggunakan fungsifungsi. Memanipulasi output untuk kelompok-kelompok baris menggunakan fungsi-fungsi. Mengubah format tanggal untuk ditampilkan menggunakan fungsi-fungsi. Mengubah tipe data-tipe data kolom menggunakan fungsifungsi. Menggunakan fungsi-fungsi NVL. Menggunakan logika IF-THEN-ELSE.
Ringkasan
Single-row functions dapat disarangkan (nested) ke dalam beberapa level. Single-row functions dapat memanipulasi berikut ini : Data Karakter : LOWER, UPPER, INITCAP, CONCAT, SUBSTR, INSTR, LENGTH Data Angka : ROUND, TRUNC, MOD Data Tanggal : MONTHS_BETWEEN, ADD_MONTHS, NEXT_DAY, LAST_DAY, ROUND, TRUNC Ingat hal-hal berikut ini : Nilai tanggal dapat menggunakan operator-operator aritmatika. Fungsi-fungsi konversi dapat mengubah karakter, tanggal, dan nilai angka : TO_CHAR, TO_DATE, TO_NUMBER. Ada beberapa fungsi berhubungan dengan null-null, terdiri dari NVL, NVL2, NULLIF dan COALESCE. Logika IF-THEN-ELSE dapat diaplikasikan dalam pernyataan SQL dengan menggunakan ekspresi CASE dan fungsi DECODE. SYSDATE dan DUAL SYSDATE adalah fungsi tanggal yang mengembalikan tanggal dan waktu saat ini. Biasanya dengan memilih SYSDATE dari tabel maya (dummy table) yang disebut DUAL.