- 1 1. Introduction
- 2 2. Dasar‑dasar Ekspresi Reguler di MySQL
- 3 3. Fungsi Ekspresi Reguler yang Ditambahkan di MySQL 8.0
- 4 4. Kasus Penggunaan Praktis untuk Ekspresi Reguler
- 5 5. Pertimbangan Penting dan Praktik Terbaik
- 6 6. Kesimpulan
- 7 7. Pertanyaan yang Sering Diajukan (FAQ)
- 7.1 Q1. Apa perbedaan antara REGEXP dan LIKE di MySQL?
- 7.2 Q2. Bagaimana saya dapat meningkatkan kinerja?
- 7.3 Q3. Bagaimana cara menangani karakter multibyte?
- 7.4 Q4. Bisakah Anda menunjukkan contoh penggantian menggunakan ekspresi reguler?
- 7.5 Q5. Apa kueri untuk mengubah format tanggal?
- 7.6 Q6. Bagaimana cara menentukan beberapa kondisi menggunakan REGEXP?
- 7.7 Ringkasan
1. Introduction
Apa Itu Ekspresi Reguler MySQL (REGEXP)?
Ekspresi reguler MySQL adalah alat yang kuat untuk mencari dan memanipulasi string secara fleksibel dalam basis data. Mereka memungkinkan pencocokan pola lanjutan yang sulit dicapai dengan pencarian string standar, memungkinkan Anda mengekstrak data yang cocok dengan format atau kondisi tertentu.
Misalnya, Anda dapat dengan mudah mengekstrak data seperti “nama yang dimulai dengan karakter tertentu” atau “kode yang hanya berisi nilai numerik.” Fungsionalitas ini sangat berguna untuk pembersihan data dan menangani kondisi pencarian yang kompleks.
Manfaat Menggunakan Ekspresi Reguler di MySQL
- Dukungan untuk Kondisi Pencarian Kompleks
- Anda dapat menentukan pola string yang kompleks yang tidak dapat ditangani oleh operator LIKE standar.
- Ekstraksi dan Penggantian Data secara Batch
- Misalnya, Anda dapat mengekstrak hanya data yang cocok dengan format tertentu atau mengganti bagian dari string.
- Fitur yang Ditingkatkan di MySQL 8.0 dan Selanjutnya
- Fungsi baru seperti REGEXP_LIKE dan REGEXP_SUBSTR telah ditambahkan, memungkinkan operasi yang lebih fleksibel.
Tujuan Artikel Ini
Artikel ini menjelaskan segala hal mulai dari penggunaan dasar ekspresi reguler MySQL (REGEXP) hingga contoh lanjutan dan pertimbangan penting. Baik Anda pemula maupun semi‑profesional, Anda akan menemukan wawasan praktis yang berguna untuk aplikasi dunia nyata.
Pada bagian berikutnya, kami akan menjelaskan dasar‑dasar ekspresi reguler di MySQL.
2. Dasar‑dasar Ekspresi Reguler di MySQL
Apa Itu Operator REGEXP?
Di MySQL, operator REGEXP digunakan untuk bekerja dengan ekspresi reguler. Operator ini menentukan apakah sebuah nilai cocok dengan pola yang ditentukan. Selain itu, RLIKE berfungsi sebagai alias untuk REGEXP.
Contoh berikut memeriksa apakah sebuah string cocok dengan pola “abc”.
SELECT * FROM users WHERE name REGEXP 'abc';
Sintaks Dasar Operator REGEXP
Sintaks dasar untuk pencarian dengan ekspresi reguler adalah sebagai berikut:
SELECT * FROM table_name WHERE column_name REGEXP 'pattern';
Daftar Pola REGEXP Umum
| Symbol | Description | Example |
|---|---|---|
^ | Matches the beginning of a line | ^abc → Strings that start with “abc” |
$ | Matches the end of a line | abc$ → Strings that end with “abc” |
. | Matches any single character | a.c → Matches “abc”, “adc”, etc. |
| | OR (matches either pattern) | abc|xyz → Matches “abc” or “xyz” |
[] | Matches any one of the specified characters | [abc] → Matches “a”, “b”, or “c” |
* | Matches zero or more repetitions | ab*c → Matches “ac”, “abc”, “abbc”, etc. |
Perbedaan Antara REGEXP dan LIKE
| Feature | LIKE | REGEXP |
|---|---|---|
| Flexibility | Supports only wildcards (% and _) | Supports advanced pattern matching |
| Performance | Fast | May be slightly slower for complex patterns |
Contoh Praktis: Pencarian dengan REGEXP
Contoh 1: Cari Format Email yang Valid
SELECT * FROM users WHERE email REGEXP '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$';
Contoh 2: Cari Kolom yang Hanya Berisi Angka
SELECT * FROM orders WHERE order_id REGEXP '^[0-9]+$';
Ringkasan
Pada bagian ini, kami membahas penggunaan dasar dan pola‑pola operator REGEXP di MySQL. Hal ini memungkinkan segala hal mulai dari pencarian sederhana hingga pencocokan pola lanjutan untuk operasi data yang fleksibel.
3. Fungsi Ekspresi Reguler yang Ditambahkan di MySQL 8.0
REGEXP_LIKE() – Pemeriksaan Kecocokan Menggunakan Ekspresi Reguler
REGEXP_LIKE(string, pattern [, flags])
Contoh:
SELECT REGEXP_LIKE('abcdef', 'abc');
Hasil: 1 (cocok)
REGEXP_INSTR() – Menemukan Posisi Kecocokan
REGEXP_INSTR(string, pattern [, start_position, occurrence, flags, return_type])
Contoh:
SELECT REGEXP_INSTR('abcdef', 'cd');
Hasil: 3
REGEXP_SUBSTR() – Mengekstrak Substring yang Cocok
REGEXP_SUBSTR(string, pattern [, start_position, occurrence, flags])
Contoh:
SELECT REGEXP_SUBSTR('abc123def', '[0-9]+');
Hasil: 123
REGEXP_REPLACE() – Mengganti Menggunakan Ekspresi Reguler
REGEXP_REPLACE(string, pattern, replacement [, start_position, occurrence, flags])
Contoh:
SELECT REGEXP_REPLACE('Item123Price456', '[0-9]', '#');
Hasil: Item###Price###
Ringkasan
Fungsi ekspresi reguler yang ditambahkan di MySQL 8.0 memungkinkan operasi string yang detail dan fleksibel. Dengan menggunakannya secara efektif, Anda dapat mengekstrak dan mengubah data dengan lebih efisien.

4. Kasus Penggunaan Praktis untuk Ekspresi Reguler
Cari Data yang Cocok dengan Pola Tertentu
Contoh 1: Deteksi Format Alamat Email
SELECT * FROM users WHERE email REGEXP '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$';
Contoh 2: Deteksi Format Nomor Telepon
SELECT * FROM contacts WHERE phone REGEXP '^[0-9]{3}-[0-9]{4}-[0-9]{4}$';
Ekstrak Substring
Contoh 1: Ekstrak Bagian Numerik
SELECT REGEXP_SUBSTR('abc123def456', '[0-9]+');
Hasil: 123
Ganti Data
Contoh 1: Ganti Angka dengan “#”
SELECT REGEXP_REPLACE('Item123Price456', '[0-9]', '#');
Hasil: Item###Price###
Validasi dan Pembersihan Data
Contoh 1: Deteksi Alamat Email Tidak Valid
SELECT * FROM users WHERE email NOT REGEXP '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$';
Ringkasan
Dengan contoh-contoh ini, Anda dapat menangani tugas-tugas seperti pencarian, ekstraksi, penggantian, dan validasi data secara efisien.
5. Pertimbangan Penting dan Praktik Terbaik
Menangani Karakter Multibyte (Karakter Lebar Penuh)
Karena ekspresi reguler MySQL dievaluasi berdasarkan byte secara default, perhatian khusus diperlukan saat menangani karakter multibyte seperti karakter Jepang.
Solusi:
ALTER TABLE users CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Dampak pada Kinerja
Masalah: Karena ekspresi reguler melibatkan pemrosesan kompleks, kinerja dapat menurun saat mencari dataset besar.
Solusi:
SELECT * FROM users WHERE email LIKE '%@example.com' AND email REGEXP '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$';
Perlindungan Terhadap ReDoS (Penolakan Layanan Ekspresi Reguler)
Masalah: Pola berbahaya dapat menyebabkan beban sistem berlebih.
Solusi:
- Gunakan pola sederhana bila memungkinkan.
- Perkuat validasi input.
- Pantau waktu eksekusi query.
Periksa Kompatibilitas Versi
Fungsi ekspresi reguler yang lebih baru tidak tersedia di versi MySQL sebelum 8.0. Selalu verifikasi versi lingkungan Anda sebelum implementasi.
Uji di Lingkungan Staging
Uji perilaku dan kinerja query sebelumnya, termasuk cara menangani kasus tepi dan nilai tidak valid.
Ringkasan
Ingat praktik terbaik ini untuk menggunakan ekspresi reguler secara aman dan efisien sambil mempertimbangkan kinerja dan keamanan.
6. Kesimpulan
Poin Penting
- Dengan mempelajari operasi dasar dan pola ekspresi reguler, Anda dapat menangani segala hal mulai dari pencarian sederhana hingga ekstraksi data yang kompleks.
- Fungsi ekspresi reguler yang diperkenalkan di MySQL 8.0 memungkinkan operasi yang lebih fleksibel.
- Menggunakan contoh praktis meningkatkan efisiensi dalam manipulasi data dunia nyata.
- Menerapkan praktik terbaik memastikan query yang aman dan berperforma tinggi.
Manfaat Menggunakan Ekspresi Reguler MySQL
- Kemampuan Pencarian Lanjutan: Mudah mendefinisikan kondisi yang sulit dengan pencarian string sederhana.
- Efisiensi Pemrosesan Data yang Lebih Baik: Ekstraksi, penggantian, dan validasi dapat diselesaikan langsung dalam SQL.
- Berbagai Aplikasi: Berguna untuk segala hal mulai dari pembersihan data hingga analisis log.
Cara Melanjutkan Pembelajaran dan Penerapan
- Latih query menggunakan dataset nyata untuk memperdalam pemahaman Anda.
- Manfaatkan secara aktif fitur versi terbaru untuk mengoptimalkan kinerja.
- Tinjau query Anda secara berkala untuk menjaga keamanan dan kecepatan.
Pemikiran Akhir
Dengan menguasai ekspresi reguler MySQL, Anda dapat meningkatkan efisiensi operasional dan memperkuat kemampuan analisis data Anda.
7. Pertanyaan yang Sering Diajukan (FAQ)
Q1. Apa perbedaan antara REGEXP dan LIKE di MySQL?
A. REGEXP mendukung pencocokan pola lanjutan, sementara LIKE terutama digunakan untuk pencocokan string parsial.
SELECT * FROM users WHERE email LIKE '%example.com';
SELECT * FROM users WHERE email REGEXP '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$';
Q2. Bagaimana saya dapat meningkatkan kinerja?
A.
- Terapkan kondisi filter terlebih dahulu.
- Gunakan indeks secara efektif.
- Jaga kueri tetap sederhana dan dioptimalkan.
Q3. Bagaimana cara menangani karakter multibyte?
A. Konfigurasikan dukungan UTF-8.
ALTER TABLE users CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Q4. Bisakah Anda menunjukkan contoh penggantian menggunakan ekspresi reguler?
A. Ganti angka dengan “#”.
SELECT REGEXP_REPLACE('Item123Price456', '[0-9]', '#');
Q5. Apa kueri untuk mengubah format tanggal?
A. Ubah “YYYY/MM/DD” menjadi “YYYY-MM-DD”.
SELECT REGEXP_REPLACE('2023/12/20', '/', '-');
Q6. Bagaimana cara menentukan beberapa kondisi menggunakan REGEXP?
A. Gunakan simbol pipa (|).
SELECT * FROM products WHERE name REGEXP 'phone|tablet';
Ringkasan
Bagian FAQ membahas pertanyaan umum dan memberikan contoh kueri praktis.


