Belajar MySQL Part 19 : Pencarian Data MySQL dengan Regular Expression (REGEXP)
Untuk pencarian sederhana, query SELECT..LIKE seperti yang telah kita bahas pada Pencarian Data dari Tabel MySQL (SELECT..LIKE) telah mencukupi. Namun untuk teknik pencarian yang lebih rumit, MySQL menyediakan query SELECT..REGEXP untuk pencarian menggunakan Regular Expression dari tabel MySQL.
Mempersiapkan Table Sample : daftar_dosen
Sebagai tabel sample untuk tutorial ini, saya akan menggunakan tabel sample dari tutorial sebelumnya, yaitu Menampilkan Data dari Tabel MySQL (SELECT). Jika anda ingin mencoba langsung query yang akan kita bahas, silahkan mengikuti petunjuk pembuatan tabel sample dari tutorial . Tabel kita akan terdiri dari tabel mata_kuliah dan tabel daftar_dosen. Dalam tutorial kali ini kita hanya akan menggunakan tabel daftar_dosen.
Pengertian Reguler Expression
Reguler Expression yang kadang disingkat dengan RexExp, atau hanya RE. Dalam bahasa sederhananya, Regular Expression adalah kumpulan huruf atau karakter yang digunakan untuk pencocokan pola (pattern matching). Pola disini contohnya ‘pola untuk kata yang diawali dengan huruf a dan diakhiri dengan huruf j’, atau yang sedikit rumit seperti ‘pola untuk kata yang diawali huruf a,b, c dengan panjang maksimal 5 huruf, mengandung minimal sebuah angka’.
Cakupan Regular Expression cukup luas, dan tidak terbatas hanya pada MySQL saja. Hampir semua bahasa pemrograman komputer menyediakan fungsi khusus untuk regular expression. Dalam tutorial ini saya hanya membahas sebagian kecil dari RegExp.
Jika pada query SELECT..LIKE kita menggunakan pola ‘s%’ sebagai kata kunci yang berarti ‘kata yang diawali dengan huruf s dan memiliki banyak huruf 1 atau lebih’ dalam regular expression, penulisannya menjadi ‘^S.*’. Terlihat sedikit rumit, tapi mari kita pelajari aturan penulisan RegExp :
Pencarian Data Tabel MySQL Menggunakan SELECT..REGEXP
Format dasar dari query pencarian menggunakan Regular Expression adalah:
Sebagai perbandingan dengan query SELECT..LIKE yang telah kita pelajari pada Pencarian Data dari Tabel MySQL (SELECT..LIKE), dengan menggunakan Regular Expression, pencarian nama_dosen yang diawali dengan huruf ‘s’ adalah:
Penggunaan Regular Expression akan diperlukan jika kita butuh pencarian yang lebih rumit. Contohnya kita ingin mencari nama_dosen yang diawali dengan huruf ‘m’ atau ’s’, dan diakhiri dengan huruf vocal. Pencarian seperti ini bisa saja kita lakukan dengan SELECT..LIKE, namun akan menggunakan operator OR yang banyak, karena untuk huruf vocal berarti nama_dosen dapat berakhir dengan huruf a, i, u, e dan o. Dalam Regular Expression, pola itu akan berbentuk: ‘^[ms].*[aiueo]$‘
Perhatikan bahwa nama_dosen Mustalifah dan M. Siddiq walaupun berawalan M, namun tidak diakhiri dengan huruf vocal.
Kesimpulan !
Untuk pemakaian database sederhana, penggunaan query SELECT..LIKE untuk metode pencarian sudah mencukupi, namun MySQL menyediakan fungsi Regular Expression ini untuk pencarian tingkat lanjut.
Dalam tutorial belajar MySQL selanjutnya, kita akan membahas tentang cara menggabungkan tabel MySQL dengan query JOIN.
Mempersiapkan Table Sample : daftar_dosen
Sebagai tabel sample untuk tutorial ini, saya akan menggunakan tabel sample dari tutorial sebelumnya, yaitu Menampilkan Data dari Tabel MySQL (SELECT). Jika anda ingin mencoba langsung query yang akan kita bahas, silahkan mengikuti petunjuk pembuatan tabel sample dari tutorial . Tabel kita akan terdiri dari tabel mata_kuliah dan tabel daftar_dosen. Dalam tutorial kali ini kita hanya akan menggunakan tabel daftar_dosen.
Table Daftar_dosen
Pengertian Reguler Expression
Reguler Expression yang kadang disingkat dengan RexExp, atau hanya RE. Dalam bahasa sederhananya, Regular Expression adalah kumpulan huruf atau karakter yang digunakan untuk pencocokan pola (pattern matching). Pola disini contohnya ‘pola untuk kata yang diawali dengan huruf a dan diakhiri dengan huruf j’, atau yang sedikit rumit seperti ‘pola untuk kata yang diawali huruf a,b, c dengan panjang maksimal 5 huruf, mengandung minimal sebuah angka’.
Cakupan Regular Expression cukup luas, dan tidak terbatas hanya pada MySQL saja. Hampir semua bahasa pemrograman komputer menyediakan fungsi khusus untuk regular expression. Dalam tutorial ini saya hanya membahas sebagian kecil dari RegExp.
Jika pada query SELECT..LIKE kita menggunakan pola ‘s%’ sebagai kata kunci yang berarti ‘kata yang diawali dengan huruf s dan memiliki banyak huruf 1 atau lebih’ dalam regular expression, penulisannya menjadi ‘^S.*’. Terlihat sedikit rumit, tapi mari kita pelajari aturan penulisan RegExp :
- . : tanda titik dalam RegExp berarti sebuah karakter apa saja
- [ … ]: tanda kurung siku ini berarti kumpulan karakter. Misalkan [abc] akan cocok dengan ‘a’, ‘b’, atau ‘c’. kita bisa juga menggunakan jangkauan (range), contohnya [a-z] akan cocok dengan seluruh huruf, [0-9] akan cocok dengan seluruh angka.
- *: tanda bintang ini akan cocok dengan 0 atau lebih karakter sebelumnya. Misalkan ‘a*’ berarti akan cocok dengan seluruh kata yang mengandung 0 atau lebih a.
- ^: tanda pangkat atau topi ini menandakan berada di awal kata.
- $: tanda dollar ini berarti bahwa pola berada di akhir kata.
- ‘ab*’: Pola ini berarti akan cocok dengan seluruh kata yang mengandung a dan diikuti oleh b atau tidak sama sekali. Contohnya: ‘a’, ‘ab’, ‘abbbbbb’, dan juga ‘kebab’, karena untuk RegExp, kita harus menyatakan dimana karakter itu muncul.
- ‘^ab*’: Pola ini sama artinya dengan ‘ab*’ seperti diatas, namun tanda ^ menyatakan bahwa pola ini harus berada di awal kata, sehingga ‘kebab’ tidak akan cocok.
- ‘^s..i$’: Pola ini akan cocok dengan seluruh kata yang diawali dengan s, dan diakhiri dengan i, terdiri dari 4 huruf. Contohnya: susi, sapi, dan siti.
Pencarian Data Tabel MySQL Menggunakan SELECT..REGEXP
Format dasar dari query pencarian menggunakan Regular Expression adalah:
SELECT nama_kolom_tampil FROM nama_tabel WHERE nama_kolom_cari REGEXP keyword_reguler_expression
- nama_kolom_tampil adalah nama dari kolom yang akan kita tampilkan, bisa semua kolom dalam tabel, atau hanya kolom tertentu saja.
- nama_tabel adalah nama tabel dimana nama_kolom_tampil berada.
- nama_kolom_cari adalah kolom yang akan kita gunakan untuk pencarian.
- keyword_regular_expression adalah kata kunci dalam bentuk regular expression yang digunakan untuk pencarian.
Sebagai perbandingan dengan query SELECT..LIKE yang telah kita pelajari pada Pencarian Data dari Tabel MySQL (SELECT..LIKE), dengan menggunakan Regular Expression, pencarian nama_dosen yang diawali dengan huruf ‘s’ adalah:
Penggunaan Regular Expression akan diperlukan jika kita butuh pencarian yang lebih rumit. Contohnya kita ingin mencari nama_dosen yang diawali dengan huruf ‘m’ atau ’s’, dan diakhiri dengan huruf vocal. Pencarian seperti ini bisa saja kita lakukan dengan SELECT..LIKE, namun akan menggunakan operator OR yang banyak, karena untuk huruf vocal berarti nama_dosen dapat berakhir dengan huruf a, i, u, e dan o. Dalam Regular Expression, pola itu akan berbentuk: ‘^[ms].*[aiueo]$‘
Perhatikan bahwa nama_dosen Mustalifah dan M. Siddiq walaupun berawalan M, namun tidak diakhiri dengan huruf vocal.
Peringatan !
RegExp dalam MySQL akan bersifat case insensitif untuk tipe data CHAR, VARCHAR atau TEXT, dan bersifat case sensitif untuk tipe data tabel BINARY, VARBINARY, atau BLOB.
Kesimpulan !
Untuk pemakaian database sederhana, penggunaan query SELECT..LIKE untuk metode pencarian sudah mencukupi, namun MySQL menyediakan fungsi Regular Expression ini untuk pencarian tingkat lanjut.
Dalam tutorial belajar MySQL selanjutnya, kita akan membahas tentang cara menggabungkan tabel MySQL dengan query JOIN.
No comments