ALTERNATIF IF DALAM SQL ORACLE



ALTERNATIF IF DALAM SQL ORACLE

     Script sql yang dimiliki oracle memang menarik dan 'cocok' dalam pemakaian perintah-perintah panjang. Berbagai kondisi pun sering kita jumpai pada syntax. Nah, salah satu perintah universal yang sering dipakai berbagai bahasa dalam mengatasi kondisi-kondisi adalah IF.
Nah, menariknya, dalam sql style biasa di oracle, if sendiri tidak dapat digunakan. Lho, kok?
     Aduh, padahal 'kan penggunaan if salah satu yang lumayan penting. Tapi tenang saja kok. Masih banyak alternatif dari if lain yang bisa kita manfaatkan dalam melakukan query. Berikut ini beberapa saja yang sering digunakan.

CASE WHEN
     Salah satu yang lumayan mumpuni adalah case when. Bagai pinang dibelah dua dengan IF. Meski ada beberapa perbedaan yang tak terlalu mencolok, namun prinsip kerjanya sama.
Syntax :
     case when kondisi then
result
     when kondisi2 then
            result2
     else
            result3
     end
Lihat. Simpel 'kan?
     Pertama, tuliskan case when, kemudian diikuti kondisi dan then. ini merupakan satu kesatuan yang harus ada, dan tidak boleh kosong. Untuk resultnya, diisi dengan keinginan kita. Pastikan juga untuk menyesuaikan dengan format dari kolom tabel. Kalau bisa, samakan format antara result dengan kondisi, yang berasal dari tabel database.
     Untuk kondisi2, kondisi3 hingga seterusnya, itu merupakan optional. Jadi tergantung keperluan, apakah mau memakainya atau tidak. Kondisi else pun juga tidak wajib. Meski begitu, bagian else kadang samgat dibutuhkan untuk menyeleraskan jika kondisi field lain tidak sesuai. Oh iya, jangan lupa pada bagian akhir, tulislah End. Dan jika dibutuhkan tambahkan alias name untuk menyingkat nama kolom case when tersebut.

Contoh penggunaan :
   select
     case when a.kode_pegawai = 'A' then
                'Pegawai Tetap'
     when a.kode_pegawai = 'B' then
                'Pegawai Kontrak'
     else
                'Magang'
     end jenis_pegawai
   from tabel_personalia a

     Manfaat utama dari case when, jelaslah untuk mendapatkan result yang bervariasi 'hanya' dalam satu kolom sesuai dengan kondisi yang terjadi. Tentu ini akan lebih mudah, daripada kita harus membuat lebih dari satu kolom dengan hasil yang berbeda. Dan diantara beberapa alternatif IF, memang menurutku case when polanya paling mudah dipahami dan bisa dipakai dalam banyak kondisi.

DECODE
     Decode bisa digunakan dalam query sql biasa. Fungsi dari ini sama dengan case when. Membandingkan kondisi untuk mendapatkan hasil. Jika kondisi sesuai, maka result utama akan muncul, jika tidak result else yang nongol.
Syntax
     Decode(expr, kondisi1,result1,result2)
Dalam bahasa manusianya
Jika expr memenuhi kirteria kondisi1 maka akan muncul hasil result1, jika tidak maka result2.
Kalo ini dialih bahasa dalam case when, maka..
     case when expr = kondisi1 then result1 else esult2 end
Contoh:
     select decode(a.kode_pegawai,'A','Pegawai Tetap','Magang') from tabel_personalia a

     Penggunaan decode, lebih singkat dan padat. Namun, pembanding atau exp hanya bisa satu saja. Dengan kata lain, hanya bisa memakai kondisi dengan sangat terbatas. Nah, bila ingin memakai banyak ya, gunakan saja case when.       

NVL
     Ini juga salah satu alternatif case when (alternatif dari alternatif?). Sangat cocok digunakan jika melibatkan data null atau kosong.
Syntax : 
     nvl(kondisi1, result2)
Contoh :
     select nvl(a.gaji_pegawai,'PKL')
from tabel_personalia a
Nah, kalau nvl lebih simpel. Jika dibahasakan lebih mudahnya...
Jika a.gaji_pegawai bernilai null atau kosong, maka hasilnya PKL. Jika tidak null, maka hasilnya TETAP a.gaji_pegawai. Dengan kata lain ,bila kondisi null maka return value-nya adalah result2, Bila tidak return valuenya adalah kondisi yang dipakai sendiri itu.

COALESCE
     Perintah satu ini prinsipnyahampir mirip dengan NVL. Hanya saja, pemakaiannya bisa menghasilkan kondisi lebih panjang, dibandingkan NVL, maupun DECODE.
Syntax :
     coalesce(kondisi1, result2)
Contoh :
     select coalescel(a.gaji_pegawai,'PKL') from tabel_personalia a
     Oke deh, itulah beberapa alternatif IF yang bisa digunakan di sql Oracle. Sebenarnya, pemakaian CASE WHEN sudah mencakup semuanya. Tapi, terkadang kita perlu memakai syntax yang lebih simpel dan  (kadang) dimengerti oleh programmer lain. 

Oke deh, semoga bermanfaat! Amin...

1 Response to "ALTERNATIF IF DALAM SQL ORACLE"

  1. Terima kasih banyak atas ilmu nya, terima kasih sudah mau berbagi :)

    ReplyDelete