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()REGEXPRLIKE
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.