Penggunaan Substring dan Instring Dalam SQL Oracle
Salah satu fitur
yang lumayan penting dan sering digunakan dalam script pengolahan data adalah
substring dan instring. Karena memang, keduanya cukup 'mahir' dalam melakukan
manipulasi atau untuk 'mengakali' data, terutama jika menyangkut dengan hasil
yang berformat string. Sebenarnya, apa sih inti dari dua syntax tersebut?
SUBSTRING
Substring merupakan
fungsi yang menghasilkan value berupa string dengan jumlah tertentu, sesuai
dengan porsi yang ditentukan oleh programmer.
Syntax :
substr(string, posisi_awal, jumlah_string yang diambil
dari posisi_awal)
Penggunaan,
misalkan kita ingin menampilkan nama pegawai kita, tapi hanya 10 huruf
depannya, atau menampilkan nama dari kata ke 2,3 dan sebagainya.
Contoh :
substr('John Herman',1,4)
Nah, perintah di
atas, berarti akan memunculkan value dari John Herman, dari huruf pertama,
dengan panjang 4 huruf dari yang pertama tadi. Maka menghasilkan result John.
substr('John Herman',6,6)
Kalau yang ini,
perhatikan baik-baik bilangan 6 setelah tulisan John Herman. Berarti
pengambilan karakter dimulai dari yang ke-6, yaitu H. (Spasi juga dihitung
karakter ya.. jadinya terbaca.)
Sampai dengan
jumlah 6 karakter setelahnya. Maka outputnya adalah Herman.
INSTRING
Nah, kalo instring,
agak beda. Tapi menurutku, merupakan pasangan sejoli substring. Hehehe...
karena biasanya dua syntax ini sering aku combo untuk hasil menggelegar. Uh,
lebay... Instring berfungsi
untuk melakukan pencarian posisi suatu string. Hasilnya bukan berupa string,
namun numeric. Simpelnya, mencari posisi karakter X ada pada urutan berapa.
Syntax :
instr(string, karakter/kata yang dicari, posisi awal
pencarian, kata/karakter ke-berapa)
Uhmm, agak ribet.
Tenang, santai aja kok.
Contohnya berikut :
instr('John Herman','J',1,1)
Jika diterjemahkan, kita mencari string 'J' pada kata 'John Herman'. Kemudian,
angka 1 yang awal, bermakna kita mencari dari karakter terdepan. Paling awal.
Jadi instr akan memproses atau
menghitung proses pencarian dari awal, dimulai dari J o h
n H e r m a n. Urut dari yang pertama. Kemudian, 1 yang kedua, artinya kita
mencari kata 'J' pertama. Ingat, J yang pertama kali muncul.
Maka result value
adalah 1. Karena kata J yang pertama sudah muncul di bilangan pertama.
Contoh lain :
instr('John Herman','n',1,2)
Kalau yang ini,
mencari kata n dari John Herman, dari bilangan pertama.
Dimana kata n yang
dicari adalah kata n kedua. Ingat, kedua.
Result value yang
muncul yaitu 11.
Karena n pertama
ada di no.4
Dan n kedua ada di paling buncit(11). Mulai paham 'kan?
Oh, iya. Instring
tidak hanya bisa memulai pencarian dari depan saja lho. Kita bisa membaliknya.
Kita pakai example n tadi lagi.
instr('John Herman','n',-1,2)
Lihat, lihat.
Sekarang kok ada tanda negatif di depan 1? Tak usah bingung lama-lama. Dengan ini, maka pencarian n
yang kedua tadi, dilakukan dari belakang, alias terbalik. Benar, tanda - (negatif)
berarti membuat pengurutan pencarian dimulai dari belakang.
Maka result value adalah 4.
n pertama dari
belakang adalah no.11.
n kedua dari belakang
adalah no.4.
Meski dimulai dari belakang, tapi penghitungan tetap dari depan. Ingatlah akan hal itu. Hehehe...
Benar juga, bila
string yang dicari tidak ada, maka nilai baliknya adalah 0.
Sebagai programmer
database yang berhubungan langsung dengan pengolahan data, tentu kita harus
jeli dan kreatif dalam membuat program. Terkadang, kita pun juga memerlukan langkah-langkah anomali
untuk melakukannya. Penggabungan instring dan subtring pun pada awalnya tak
berniat kucoba. Namun, karena kondisi mendesak, dan permintaan dari pengguna
yang menginginkan data tampil sedemkian rupa. Mau tidak mau, kita harus
mengakali dan mengotak-atik dengan menjoinkan fungsi subtring dan instring ini.
Yup, yup...
Insya Allah, semoga
sedikit penjelasan ini dapat membantu!
Terima kasih info nya tentang query --> INSTR
ReplyDelete