MySQL memiliki sejumlah fungsi dan operator yang memungkinkan kita untuk melakukan operasi menggunakan ekspresi reguler (regex). Artikel ini menyajikan dua operator dan satu fungsi yang memungkinkan kita mengetahui apakah string cocok dengan ekspresi reguler yang ditentukan oleh pola tertentu.
Fungsi dan operator regex ini adalah:
REGEXP_LIKE()
REGEXP
RLIKE
Ini semua pada dasarnya setara, karena operator (dua yang kedua) keduanya sinonim dari fungsi (yang pertama). Bagaimanapun, Anda dapat melihat contoh dari ketiga tindakan di bawah ini.
REGEXP_LIKE()
Fungsi
Pertama, mari kita lihat fungsinya. Berikut adalah contoh menjalankan pencarian regex menggunakan REGEXP_LIKE()
fungsi:
SELECT REGEXP_LIKE('Car', '^C') AS 'Match', REGEXP_LIKE('Bar', '^C') AS 'No Match';
Hasil:
+-------+----------+ | Match | No Match | +-------+----------+ | 1 | 0 | +-------+----------+
String pertama cocok (karena dimulai dengan C ) jadi hasilnya 1
. String kedua tidak cocok dan hasilnya adalah 0
.
Namun, fungsi ini bisa jauh lebih berguna daripada sekadar mengembalikan 1
atau 0
. Misalnya, dapat ditambahkan ke WHERE
klausa saat menanyakan database. Dalam hal ini, kita bisa mendapatkan daftar baris yang berisi kecocokan untuk pola tersebut.
Ini contohnya:
SELECT AlbumId, AlbumName FROM Albums WHERE REGEXP_LIKE(AlbumName, '^Power');
Hasil:
+---------+------------+ | AlbumId | AlbumName | +---------+------------+ | 1 | Powerslave | | 2 | Powerage | +---------+------------+
Berikut tabel lengkapnya:
SELECT AlbumId, AlbumName FROM Albums;
Hasil:
+---------+--------------------------+ | AlbumId | AlbumName | +---------+--------------------------+ | 1 | Powerslave | | 2 | Powerage | | 3 | Singing Down the Lane | | 4 | Ziltoid the Omniscient | | 5 | Casualties of Cool | | 6 | Epicloud | | 7 | Somewhere in Time | | 8 | Piece of Mind | | 9 | Killers | | 10 | No Prayer for the Dying | | 11 | No Sound Without Silence | | 12 | Big Swing Face | | 13 | Blue Night | | 14 | Eternity | | 15 | Scandinavia | | 16 | Long Lost Suitcase | | 17 | Praise and Blame | | 18 | Along Came Jones | | 19 | All Night Wrong | | 20 | The Sixteen Men of Tain | +---------+--------------------------+
REGEXP
Operator
Berikut cara melakukan hal yang sama menggunakan REGEXP
operator:
SELECT 'Car' REGEXP '^C' AS 'Match', 'Bar' REGEXP '^C' AS 'No Match';
Hasil:
+-------+----------+ | Match | No Match | +-------+----------+ | 1 | 0 | +-------+----------+
Dan contoh databasenya:
SELECT AlbumId, AlbumName FROM Albums WHERE AlbumName REGEXP '^Power';
Hasil:
+---------+------------+ | AlbumId | AlbumName | +---------+------------+ | 1 | Powerslave | | 2 | Powerage | +---------+------------+
Anda juga dapat menggunakan NOT REGEXP
untuk mengembalikan hasil sebaliknya.
RLIKE
Operator
Dan ini dia menggunakan RLIKE
:
SELECT 'Car' RLIKE '^C' AS 'Match', 'Bar' RLIKE '^C' AS 'No Match';
Hasil:
+-------+----------+ | Match | No Match | +-------+----------+ | 1 | 0 | +-------+----------+
Dan contoh databasenya:
SELECT AlbumId, AlbumName FROM Albums WHERE AlbumName RLIKE '^Power';
Hasil:
+---------+------------+ | AlbumId | AlbumName | +---------+------------+ | 1 | Powerslave | | 2 | Powerage | +---------+------------+
Dalam hal ini saya cukup menukar REGEXP
untuk RLIKE
dan biarkan sisa kodenya.
Anda juga dapat menggunakan NOT RLIKE
untuk mengembalikan hasil sebaliknya.
Fungsi REGEX Lainnya
MySQL juga menyertakan beberapa fungsi dan operator regex lainnya. Tiga di antaranya tercantum di bawah ini. Secara teknis, Anda juga bisa menggunakan dua yang pertama untuk "mendeteksi" apakah string cocok dengan pola regex (dalam hal ini, mungkin artikel ini harus berjudul "5 Cara untuk Mendeteksi jika String Cocok dengan Ekspresi Reguler di MySQL" daripada hanya " 3 cara…”).
Bagaimanapun, berikut adalah tiga fungsi regex lagi:
- Anda dapat menggunakan
REGEXP_INSTR()
berfungsi untuk mengembalikan indeks awal substring yang cocok dengan pola ekspresi reguler. REGEXP_SUBSTR()
fungsi mengembalikan substring yang cocok dengan pola ekspresi reguler yang diberikan.- Dan
REGEXP_REPLACE()
fungsi menggantikan kemunculan substring dalam string yang cocok dengan pola ekspresi reguler yang diberikan.