Pencocokan Pola dengan Operator REGEXP - MySQL Dasar #10

Pencocokan Pola dengan Operator REGEXP - MySQL Dasar #10


Selain menggunakan operator LIKE, Anda juga bisa melakukan sebuah pencarian atau pencocokan pola menggunakan operator REGEXP dan pola ekspresi reguler Catatan : Ekspresi Reguler berupa karakter ^$. (arrow up, dolar dan titik) Mencari string yang diawali dengan substring tertentu Pada contoh kita akan mencoba mencari sebuah string pada tabel sayuran yang diawali dengan substring ‘ba’ Contoh :

Baca sebelumnya : Pencocokan Pola Menggunakan Operator LIKE - MySQL Dasar #9
 

MariaDB [codexam]> SELECT nama FROM sayuran WHERE nama REGEXP '^ba';
+--------------+
| nama         |
+--------------+
| bayam        |
| bawang merah |
| bawang putih |
| bawang daun  |
+--------------+
4 rows in set (0.00 sec)


Anda juga bisa menggunakan parameter NOT REGEXP untuk membalikan hasil Mencari string yang memiliki akhiran substring tertentu Selanjutnya Anda juga mencari / menampilkan sebuah string yang memiliki akhiran karakter/substring tertentu. Dalam contoh ini Saya akan mencoba menampilkan sebuah string yang memiliki akhiran substring ‘ng’ pada tabel sayuran Contoh :

MariaDB [codexam]> SELECT nama FROM sayuran WHERE nama REGEXP 'ng$';
+----------+
| nama     |
+----------+
| kangkung |
| kentang  |
+----------+
2 rows in set (0.00 sec)


Mencari string yang memiliki substring tertentu pada sembarang posisi REGEXP juga bisa menampilkan sebuah string yang memiliki substring atau karakter tertentu pada posisi sembarang. Misalnya contohnya disini, kita akan menampilkan setiap data pada tabel sayuran yang memiliki karakter atau substring ‘ang’ Contoh :

MariaDB [codexam]> SELECT nama FROM sayuran WHERE nama REGEXP 'ang';
+--------------+
| nama         |
+--------------+
| kangkung     |
| kentang      |
| bawang merah |
| bawang putih |
| bawang daun  |
+--------------+
5 rows in set (0.00 sec)



Mencari string yang memiliki substring tertentu pada posisi tertentu Selanjutnya Anda juga bisa menentukan dari posisi mana pencarian terhadap substring akan dimulai. Misalnya jika pada string ‘bawang’ karakter ‘ang’ terdapat pada karakter ke-4, maka Anda bisa menuliskan quernya seperti berikut

MariaDB [codexam]> SELECT nama FROM sayuran WHERE nama REGEXP '^...ang';
+--------------+
| nama         |
+--------------+
| bawang merah |
| bawang putih |
| bawang daun  |
+--------------+
3 rows in set (0.00 sec)


Pada hasil query diatas terlihat bahwa hanya string bawang yang ditampilkan, sedangkan string lain tidak ditampilkan meskipung string kangkung dan kentang memiliki substring ‘ang’ Mencocokan string yang diawali dengan vokal tertentu Anda bisa mencocokkan string – string yang diawali dari sebuah vokal tertentu, vokal yang dimaksud disini adalah kumpulan nilai tertentu yang akan dicari. Misalnya seperti berikut : Contoh

MariaDB [codexam]> SELECT nama FROM buah WHERE nama REGEXP '^[aiueo]';
+-----------+
| nama      |
+-----------+
| anggur    |
| apel      |
| udun      |
| ogon-ogon |
+-----------+
4 rows in set (0.00 sec)


Parameter [aiueo] adalah vokal ataupun nilai yang akan dicocokan kesebuah string apakah memuat salah nilai [aiueo] diawal karakter. Nilai [aiueo] bukanlah parameter tetap, Anda bisa mengubahnya menjadi karakter/pola lain. query diatas menampilkan data anggur, apel, udun, ogon-ogon dari tabel buah, hal tersebut dikarenakan string yang ditampilkan tersebut memuat salah satu nilai [aiueo] diawal karakter. Tanda kurung bisa Anda pakai untuk mengelempokan sebuah pola. Misalnya ketika Anda ingin mencocokan string – string yang memuat semua digit atau semua alphabet. Anda bisa mencoba parameter berikut Contoh :

MariaDB [codexam]> SELECT '0m' REGEXP '^[[:digit:]]+|[[:alpha:]]+$';
+-------------------------------------------+
| '0m' REGEXP '^[[:digit:]]+|[[:alpha:]]+$' |
+-------------------------------------------+
|                                         1 |
+-------------------------------------------+
1 row in set (0.00 sec)


dari query diatas bisa dilihat bahwa jika salah satu nilai yang di select memiliki karakter digit ataupun huruf, maka akan mengembalikan nilai true, jika selain karakter digit dan alpha maka hasilnya adalah false, atau jika keduanya salah (bkn digit atau alpha) maka nilainya akan false. Jadi query diatas menerima semua karakter digit, huruf atau penggabungan keduanya sehingga bisa dibilang pola diatas tidak berhasil, karena disini yang ingin dihasilkan adalah mencocokan string digit atau huruf, bukan kombinasi keduanya. Jika kedua alternatif diatas dikelompokan dalam kurung, maka nilai ^ dan $ akan diterapkan terhadap keduanya, dan pola akan memberikan hasil yang lebih akurat dibandingkan sebelumnya. Misalkan jika nilai SELECT ‘A’ diawali dengan string ‘A’ maka nilai semua nilai harus berupa huruf, atau jika nilai SELECT diawali dengan digit ‘9’ maka nilai harus berupa digit, jika terdapat kombinasi dari keduanya, huruf dan digit, misalnya ‘0m’ maka nilainya akan menjadi false;

MariaDB [codexam]> SELECT '0m' REGEXP '^([[:digit:]]+|[[:alpha:]]+)$';
+---------------------------------------------+
| '0m' REGEXP '^([[:digit:]]+|[[:alpha:]]+)$' |
+---------------------------------------------+
|                                           0 |
+---------------------------------------------+
1 row in set (0.00 sec)


query akan menghasilkan nilai true jika string memuat hanya huruf saja atau angka saja. Terakhir perlu dicatat bahwa ekspresi regular tidak dapat melakukan pencocokan string pada nilai NULL, baik itu REGEXP atau NOT REGEXP

0 Response to "Pencocokan Pola dengan Operator REGEXP - MySQL Dasar #10"

Post a Comment

Komentar yang Anda kirim akan terlebih dahulu di moderasi oleh Admin