info-b

Tutorial Belajar MySQL Part 23: Pencarian Data MySQL dengan Regular Expression (REGEXP)

Posted on

Bagi pencarian sederhana, query SELECT..LIKE seperti yang telah kita bahas di Tutorial Belajar MySQL: Pencarian Data dari Tabel MySQL (SELECT..LIKE) telah mencukupi. Namun bagi teknik pencarian yang lebih rumit, MySQL menyediakan query SELECT..REGEXP bagi pencarian menggunakan Regular Expression dari tabel MySQL.


Mempersiapkan Tabel Contoh: daftar_dosen

Selaku tabel sampel bagi panduan ini, saya akan menggunakan tabel sampel dari panduan sebelumnya, yaitu Tutorial Belajar MySQL: Menampilkan Data dari Tabel MySQL (SELECT). Kalau sahabat ingin mencoba seketika query yang akan kita bahas, silahkan mengikuti pedoman perancangan tabel sampel dari panduan . Tabel kita akan terdiri dari tabel mata_kuliah dan tabel daftar_dosen. Pada panduan kali ini kita hanya akan menggunakan tabel daftar_dosen.

Tabel daftar_dosen

NIP Nama Dosen No HP Tempat tinggal
0160436012 Sabrina Sari 0812349900 Pekanbaru
0260432002 Maya Ari Putri 0812345234 Palembang
0275430005 Susi Indriani 0812656532 Bogor
0480432066 Tia Santrini 0812451177 Padang
0576431001 M. Siddiq 0812979005 Jakarta
0770435006 Rubin Hadi 0812567678 Papua
0869437003 Mustalifah 0812338877 Aceh
1080432007 Arif Budiman 0812456345 Makasar

Pengertian Regular Expression

Untuk yang telah pernah mengenal bahasa pemrograman lain, mungkin telah mengenal Reguler Expression yang kadang disingkat dengan RexExp, atau hanya RE. Pada bahasa sederhananya, Regular Expression yaitu kumpulan huruf atau karakter yang digunakan bagi pencocokan pola (pattern matching). Pola disini contohnya ‘pola bagi kata yang diawali dengan huruf a dan diakhiri dengan huruf j’, atau yang sedikit rumit seperti ‘pola bagi kata yang diawali huruf a,b, c dengan panjang maksimal 5 huruf, mengandung minimal sebuah angka’.

Cakupan Regular Expression lumayan luas, dan tak terbatas hanya di MySQL saja. Hampir segala bahasa pemrograman komputer menyediakan kegunaan khusus bagi regular expression. Pada panduan ini saya hanya membahas sebahagian kecil dari RegExp.

Kalau di query SELECT..LIKE kita menggunakan pola ‘s%’ selaku kata kunci yang berarti ‘kata yang diawali dengan huruf s dan mempunyai banyak huruf 1 atau lebih’ pada regular expression, penulisannya menjadi ‘^S.*’. Terlihat sedikit rumit, tapi mari kita pelajari aturan penulisan RegExp:

  • . : tanda titik pada RegExp berarti sebuah karakter apa saja
  • [ … ]: tanda kurung siku ini berarti kumpulan karakter. Misalkan [abc] akan cocok dengan ‘a’, ‘b’, atau ‘c’. kita dapat pun 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 ahir kata.

Mari kita contohkan penggunakan pola RegExp:

  • ab*’: Pola ini berarti akan cocok dengan seluruh kata yang mengandung a dan diikuti oleh b atau tak sama sekali. Contohnya: ‘a’, ‘ab’, ‘abbbbbb’, dan pun ‘kebab’, karena bagi RegExp, kita mesti menyatakan dimana karakter itu muncul.
  • ^ab*’: Pola ini sama artinya dengan ‘ab*’ seperti diatas, namun tanda ^ menyatakan bahwa pola ini mesti berada di awal kata, sehingga ‘kebab’ tak 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 mendasar dari query pencarian menggunakan Regular Expression yaitu:

  • nama_kolom_tampil yaitu nama dari kolom yang akan kita tampilkan, dapat segala kolom pada tabel, atau hanya kolom tertentu saja.
  • nama_tabel yaitu nama tabel dimana nama_kolom_tampil berada.
  • nama_kolom_cari yaitu kolom yang akan kita gunakan bagi pencarian.
  • keyword_regular_expression yaitu kata kunci pada wujud regular expression yang digunakan bagi pencarian.

Selaku perbandingan dengan query SELECT..LIKE yang telah kita pelajari di Tutorial Belajar MySQL: Pencarian Data dari Tabel MySQL (SELECT..LIKE), dengan menggunakan Regular Expression, pencarian nama_dosen yang diawali dengan huruf ‘s’ yaitu:

Pemakaian Regular Expression akan diperlukan seandainya 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 dapat saja kita lakukan dengan SELECT..LIKE, namun akan menggunakan operator OR yang banyak, karena bagi huruf vocal berarti nama_dosen dapat berakhir dengan huruf a, i, u, e d
an o. Pada Regular Expression, pola itu akan berbentuk: ‘^[ms].*[aiueo]$

Perhatikan bahwa nama_dosen Mustalifah dan M. Siddiq walaupun berawalan M, namun tak diakhiri dengan huruf vocal.

RegExp pada MySQL akan bersifat case insensitif bagi tipe data CHAR, VARCHAR atau TEXT, dan bersifat case sensitif bagi tipe data tabel BINARY, VARBINARY, atau BLOB.


Bagi pemakaian database sederhana, pemakaian query SELECT..LIKE bagi cara pencarian telah mencukupi, namun MySQL menyediakan kegunaan Regular Expression ini bagi pencarian tingkat lanjut.

Pada panduan belajar MySQL berikutnya, kita akan membahas mengenai cara menggabungkan tabel MySQL dengan query JOIN.


Sumber https://www.duniailkom.com/