- 1 1. Pendahuluan
- 2 2. Dasar-dasar Ekspresi Reguler dan Sintaks di MySQL
- 3 Ringkasan
- 4 3. Regular Expression Functions Added in MySQL 8.0 and Later
- 5 4. Contoh Praktis Ekspresi Reguler MySQL
- 6 Ringkasan
- 7 5. Pertimbangan Penting Saat Menggunakan Ekspresi Reguler (Kinerja dan Keamanan)
- 8 Ringkasan
- 9 6. FAQ (Pertanyaan yang Sering Diajukan)
- 9.1 6.1 Pola regex apa yang dapat saya gunakan di MySQL?
- 9.2 6.2 Apa perbedaan antara LIKE dan REGEXP?
- 9.3 6.3 Apa perbedaan fitur regex antara MySQL 5.x dan MySQL 8.x?
- 9.4 6.4 Apa yang harus saya lakukan jika regex tidak berfungsi seperti yang diharapkan?
- 9.5 6.5 Bagaimana saya dapat meningkatkan kinerja kueri REGEXP?
- 10 Ringkasan
- 11 7. Ringkasan
1. Pendahuluan
Menggunakan Ekspresi Reguler di MySQL
MySQL adalah sistem manajemen basis data yang kuat untuk mencari dan memanipulasi data, dan juga mendukung ekspresi reguler (REGEXP) untuk memungkinkan pencarian yang lebih fleksibel. Dengan ekspresi reguler, Anda dapat mengekstrak data yang cocok dengan pola tertentu secara efisien, serta memformat atau memvalidasi data.
Manfaat Menggunakan Ekspresi Reguler di MySQL
Menggunakan ekspresi reguler MySQL memberikan manfaat seperti:
- Pencarian lanjutan : Dengan mudah mengekstrak data yang berisi string atau pola tertentu.
- Memeriksa integritas data : Berguna untuk validasi input (misalnya, memvalidasi format alamat email).
- Lebih kuat daripada operator LIKE : Dibandingkan dengan LIKE, yang menggunakan wildcard (
%dan_), REGEXP memungkinkan Anda mendefinisikan kondisi pencarian yang kompleks dengan lebih fleksibel.
Tujuan dan Struktur Artikel Ini
Artikel ini menjelaskan segala hal mulai dari dasar-dasar ekspresi reguler di MySQL hingga penggunaan lanjutan, optimasi kinerja, dan fungsi ekspresi reguler baru yang diperkenalkan di MySQL 8.0 dan versi selanjutnya. Dengan contoh praktis, konten dirancang agar mudah dipahami bahkan bagi pemula.
Struktur artikel:
- Dasar-dasar dan sintaks ekspresi reguler MySQL
- Fungsi ekspresi reguler yang ditambahkan di MySQL 8.0 dan versi selanjutnya
- Contoh praktis (validasi, ekstraksi data, konversi format)
- Pertimbangan penting saat menggunakan ekspresi reguler (kinerja, keamanan)
- FAQ (Frequently Asked Questions)
- Ringkasan
2. Dasar-dasar Ekspresi Reguler dan Sintaks di MySQL
Cara Menggunakan Ekspresi Reguler di MySQL
Di MySQL, Anda menggunakan operator REGEXP (atau RLIKE) untuk bekerja dengan ekspresi reguler. Mirip dengan operator LIKE, operator ini digunakan untuk menentukan apakah nilai kolom cocok dengan pola regex yang ditentukan.
Sintaks dasar
SELECT * FROM table_name WHERE column_name REGEXP 'regex_pattern';
Atau
SELECT * FROM table_name WHERE column_name RLIKE 'regex_pattern';
RLIKE adalah alias untuk REGEXP, dan keduanya berperilaku sama.
Contoh
Misalnya, untuk mencari catatan di mana nama mengandung karakter “山”:
SELECT * FROM users WHERE name REGEXP '山';
Pola Dasar Ekspresi Reguler
Di ekspresi reguler MySQL, Anda dapat menggunakan pola seperti berikut.
| Symbol | Meaning | Example | Result |
|---|---|---|---|
. | Any single character | a.c | Matches “abc”, “aac”, “adc” |
^ | Start of the string | ^abc | Matches “abcde” but not “dabc” |
$ | End of the string | xyz$ | Matches “axyz” but not “xyzb” |
[] | Any one of the specified characters | [abc] | Matches “a”, “b”, or “c” |
[^] | Any character not in the specified set | [^abc] | Matches any character except “a”, “b”, or “c” |
* | Repeat the preceding character 0 or more times | a* | Matches “”, “a”, “aa”, “aaa”, etc. |
+ | Repeat the preceding character 1 or more times | a+ | Matches “a”, “aa”, “aaa”, etc. (does not match the empty string) |
{n} | Repeat the preceding character exactly n times | a{3} | Matches “aaa” |
{n,} | Repeat the preceding character at least n times | a{2,} | Matches “aa”, “aaa”, “aaaa”, etc. |
{n,m} | Repeat the preceding character between n and m times | a{2,4} | Matches “aa”, “aaa”, “aaaa” |
Perbedaan dengan Operator LIKE
MySQL juga menyediakan operator LIKE, yang biasanya digunakan untuk pencocokan pola sederhana. Namun, REGEXP lebih kuat daripada LIKE dan mendukung pencarian dengan kondisi yang lebih kompleks.
Contoh 1: Menggunakan operator LIKE
SELECT * FROM users WHERE name LIKE '%山%';
- Dengan
LIKE, Anda dapat mencari data yang mengandung山, tetapi hanya dapat menggunakan wildcard sederhana (%dan_).
Contoh 2: Menggunakan operator REGEXP
SELECT * FROM users WHERE name REGEXP '^山';
- Dengan
REGEXP, Anda dapat mengekstrak hanya data di mana nama dimulai dengan 山.
Cara Menentukan Beberapa Pola
Anda dapat menggunakan | untuk menentukan beberapa pola dengan kondisi OR.
Contoh: Dapatkan pengguna yang nama belakangnya “佐藤” atau “田中”
SELECT * FROM users WHERE name REGEXP '佐藤|田中';
Pencocokan Negatif
Jika Anda menggunakan ^ di dalam tanda kurung siku, Anda dapat mengambil data yang “tidak mengandung karakter yang ditentukan”.
Contoh: Data yang dimulai dengan karakter selain “山”
SELECT * FROM users WHERE name REGEXP '^[^山]';
Dalam kasus ini, ia mengembalikan catatan di mana nama tidak dimulai dengan 山.
Ringkasan
- Di MySQL,
REGEXPmemungkinkan pencarian pola yang lebih kuat dibandingkanLIKE. - Memahami sintaks dasar dan pola (
.,^,$,[],*,+, dll.) memungkinkan pencarian yang fleksibel. - Penting untuk memahami perbedaan dengan
LIKEdan menggunakan masing‑masing secara tepat. - Menggunakan
|memungkinkan pencarian dengan beberapa pola. - Menggunakan kelas karakter negatif
[^ ]membantu Anda mencari data yang tidak dimulai dengan karakter tertentu.
3. Regular Expression Functions Added in MySQL 8.0 and Later
Di MySQL 8.0, selain operator REGEXP tradisional, empat fungsi baru ditambahkan untuk memungkinkan pencarian ekspresi reguler yang lebih fleksibel. Fungsi‑fungsi ini memungkinkan Anda mengambil posisi kecocokan, mengekstrak substring, dan melakukan penggantian, sehingga secara signifikan memperluas apa yang dapat Anda lakukan dengan regex di MySQL.
Pada bagian ini, kami menjelaskan setiap fungsi ekspresi reguler baru secara detail dan menampilkan contoh konkret.
3.1 REGEXP_LIKE()
Overview
REGEXP_LIKE(), seperti operator REGEXP, memeriksa apakah nilai kolom cocok dengan pola regex yang ditentukan.
Syntax
REGEXP_LIKE(column_name, 'regex_pattern' [, flags])
column_name: kolom yang akan dicari'regex_pattern': pola regex yang digunakan sebagai kondisiflags (optional): sensitivitas huruf (gunakaniuntuk pencocokan tidak memperhatikan huruf besar/kecil)
Examples
“Dapatkan pengguna yang emailnya berakhiran gmail.com atau yahoo.co.jp”
SELECT * FROM users WHERE REGEXP_LIKE(email, '(@gmail\.com|@yahoo\.co\.jp)$');
“Cari nama pengguna yang mengandung ‘admin’ (tidak memperhatikan huruf besar/kecil)”
SELECT * FROM users WHERE REGEXP_LIKE(username, 'admin', 'i');
✅ REGEXP_LIKE() memiliki tujuan yang sama dengan operator REGEXP, tetapi memungkinkan gaya yang lebih standar dan ramah SQL.
3.2 REGEXP_INSTR()
Overview
REGEXP_INSTR() mengembalikan posisi (indeks mulai) di mana kecocokan regex terjadi dalam sebuah string.
Syntax
REGEXP_INSTR(column_name, 'regex_pattern' [, start_position, occurrence, return_option, flags])
start_position(optional): posisi mulai pencarian (default: 1)occurrence(optional): kecocokan ke‑berapa yang akan dikembalikan (default: 1)return_option(optional): 0 (kembalikan posisi mulai) atau 1 (kembalikan posisi akhir kecocokan)flags(optional): gunakaniuntuk pencocokan tidak memperhatikan huruf besar/kecil
Examples
“Jika nomor telepon dimulai dengan 090 atau 080, dapatkan posisi mulai”
SELECT phone, REGEXP_INSTR(phone, '^(090|080)') AS match_pos FROM users;
“Dapatkan posisi mulai bagian domain dalam sebuah alamat email”
SELECT email, REGEXP_INSTR(email, '@') AS domain_start FROM users;
- Ia mengembalikan posisi di mana
@ditemukan (misalnya,user@example.commengembalikan5).
✅ Dengan REGEXP_INSTR(), Anda dapat mengambil informasi posisi, memperluas pilihan Anda dalam pemrosesan string.
3.3 REGEXP_SUBSTR()
Overview
REGEXP_SUBSTR() mengekstrak substring yang cocok dengan pola regex dari dalam sebuah string.
Syntax
REGEXP_SUBSTR(column_name, 'regex_pattern' [, start_position, occurrence, flags])
occurrence(optional): dapatkan kecocokan ke‑n (default: 1)flags(optional): sensitivitas huruf (iuntuk mengabaikan huruf besar/kecil)
Examples
“Ekstrak hanya bagian domain dari sebuah alamat email”
SELECT email, REGEXP_SUBSTR(email, '@[a-zA-Z0-9.-]+') AS domain FROM users;
“Dapatkan urutan angka pertama dalam sebuah pesan”
SELECT message, REGEXP_SUBSTR(message, '[0-9]+') AS first_number FROM logs;
✅ Dengan REGEXP_SUBSTR(), Anda dapat mengekstrak pola spesifik dan menggunakannya untuk mengorganisir serta mentransformasi data.
3.4 REGEXP_REPLACE()
Overview
REGEXP_REPLACE() mengganti substring yang cocok dengan pola regex dengan string lain.
Syntax
REGEXP_REPLACE(column_name, 'regex_pattern', 'replacement' [, occurrence, flags])
replacement: string yang akan menggantikan bagian yang cocokoccurrence(opsional): ganti hanya kecocokan ke-n (jika diabaikan, ganti semua kecocokan)flags(opsional): gunakaniuntuk pencocokan tidak peka huruf besar kecil
Contoh
“Hapus tanda hubung (-) dari nomor telepon”
SELECT phone, REGEXP_REPLACE(phone, '-', '') AS clean_phone FROM users;
“Hapus tag HTML”
SELECT comment, REGEXP_REPLACE(comment, '<[^>]+>', '') AS clean_text FROM reviews;
✅ Dengan REGEXP_REPLACE(), konversi format dan pembersihan data menjadi mudah.
3.5 Ringkasan
| Function | Purpose | Example |
|---|---|---|
REGEXP_LIKE() | Check whether a value matches a regex pattern | SELECT * FROM users WHERE REGEXP_LIKE(email, '@gmail\.com$'); |
REGEXP_INSTR() | Get the start position of the matched substring | SELECT REGEXP_INSTR(email, '@') FROM users; |
REGEXP_SUBSTR() | Extract the matched substring | SELECT REGEXP_SUBSTR(email, '@[a-zA-Z0-9.-]+') FROM users; |
REGEXP_REPLACE() | Replace the matched substring | SELECT REGEXP_REPLACE(phone, '-', '') FROM users; |
4. Contoh Praktis Ekspresi Reguler MySQL
Dengan memanfaatkan ekspresi reguler MySQL, Anda dapat menyederhanakan tugas pemrosesan data dunia nyata seperti validasi data, ekstraksi data spesifik, dan konversi format. Pada bagian ini, kami memperkenalkan kasus penggunaan praktis dengan kode SQL dan penjelasan.
4.1 Validasi Alamat Email
Gambaran Umum
Gunakan ekspresi reguler untuk memeriksa apakah alamat email yang disimpan di database mengikuti format yang valid.
SQL yang Digunakan
SELECT email FROM users
WHERE email REGEXP '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$';
Penjelasan
^[a-zA-Z0-9._%+-]+→ satu atau lebih karakter alfanumerik, titik, garis bawah, atau tanda plus sebelum@@[a-zA-Z0-9.-]+→ nama domain setelah@\.[a-zA-Z]{2,}$→ diakhiri dengan TLD (Top-Level Domain) minimal 2 huruf (misalnya,.com,.jp,.net)
Dengan kueri ini, Anda dapat mengecualikan alamat email yang tidak valid (misalnya, user@@example.com, user@.com).
4.2 Memeriksa Format Nomor Telepon Jepang
Gambaran Umum
Tentukan apakah nomor telepon Jepang umum (misalnya, 090-1234-5678, 03-1234-5678) mengikuti format yang benar.
SQL yang Digunakan
SELECT phone FROM users
WHERE phone REGEXP '^(0[789]0-[0-9]{4}-[0-9]{4}|0[1-9]-[0-9]{4}-[0-9]{4})$';
Penjelasan
0[789]0-[0-9]{4}-[0-9]{4}→ nomor seluler (090-xxxx-xxxx,080-xxxx-xxxx, dst.)0[1-9]-[0-9]{4}-[0-9]{4}→ nomor telepon rumah (03-xxxx-xxxx,06-xxxx-xxxx, dst.)
Dengan cara ini, ekspresi reguler berguna ketika konsistensi format diperlukan.
4.3 Validasi Format Nomor Kartu Kredit
Gambaran Umum
Validasi format nomor kartu kredit (Visa, Mastercard, American Express, dst.).
SQL yang Digunakan
SELECT card_number FROM payments
WHERE card_number REGEXP '^(4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|3[47][0-9]{13})$';
Penjelasan
^4[0-9]{12}(?:[0-9]{3})?$→ Visa (16 digit atau 13 digit)^5[1-5][0-9]{14}$→ Mastercard (16 digit)^3[47][0-9]{13}$→ American Express (15 digit)
Dengan kueri ini, Anda dapat menyaring nomor kartu yang tidak valid di database (misalnya, panjang yang salah atau digit awal yang tidak valid).
4.4 Menghapus Tag HTML
Gambaran Umum
Jika data yang dikirim pengguna berisi tag HTML, Anda dapat menghapusnya dan mengonversi konten menjadi teks biasa.
SQL yang Digunakan
SELECT REGEXP_REPLACE(comment, '<[^>]+>', '') AS clean_comment FROM reviews;
Penjelasan
'<[^>]+>'→ menghapus semua tag HTML antara<dan>
Contoh
| Input | Output |
|---|---|
<b>Hello</b> World! | Hello World! |
<p>これはサンプルです</p> | これはサンプルです |
Ini berguna untuk menghapus tag HTML dari komentar pengguna dan posting blog.
4.5 Validasi Format Kode Pos (Jepang)
Gambaran Umum
Validasi apakah kode pos Jepang (misalnya, 123-4567) mengikuti format yang benar.
SQL yang Digunakan
SELECT postal_code FROM addresses
WHERE postal_code REGEXP '^[0-9]{3}-[0-9]{4}$';
Penjelasan
^[0-9]{3}-[0-9]{4}$→ kode pos dalam format “3 digit-4 digit”
Menggunakan regex ini membantu menjaga konsistensi data dan mencegah format yang salah.
4.6 Penyaringan Nama Pengguna (Mendeteksi Kata yang Tidak Diizinkan)
Gambaran Umum
Check whether usernames contain disallowed words reserved for system use (e.g., admin, root, system) during registration.
SQL yang Digunakan
SELECT username FROM users
WHERE username REGEXP 'admin|root|system';
Penjelasan
admin|root|system→ mendeteksi nama pengguna yang mengandung istilah ini
Kueri ini membantu mencegah pengguna biasa menggunakan nama yang ditujukan untuk administrator sistem.
Ringkasan
- Ekspresi reguler dapat digunakan untuk memvalidasi alamat email, nomor telepon, dan nomor kartu kredit .
- Mereka juga dapat diterapkan untuk menghapus tag HTML dan mengonversi format data .
- Mereka efektif untuk meningkatkan keamanan dan konsistensi basis data melalui tugas seperti menyaring kata yang tidak diizinkan dan memvalidasi kode pos .

5. Pertimbangan Penting Saat Menggunakan Ekspresi Reguler (Kinerja dan Keamanan)
Menggunakan ekspresi reguler di MySQL memungkinkan pencarian dan pembersihan data yang kuat. Namun, penggunaan yang tidak tepat dapat menyebabkan penurunan kinerja dan menimbulkan risiko keamanan. Bagian ini menjelaskan pertimbangan kunci untuk menggunakan ekspresi reguler MySQL secara aman dan efisien.
5.1 Optimasi Kinerja untuk Ekspresi Reguler
Pencarian regex MySQL nyaman, tetapi memiliki kelemahan: indeks umumnya tidak berlaku, yang dapat membuat kueri lebih lambat.
Langkah-langkah untuk Meningkatkan Kinerja
- Gabungkan indeks
LIKEatauFULLTEXTSELECT * FROM users WHERE email LIKE '%gmail.com';
- Gunakan ekspresi reguler yang lebih sederhana
SELECT * FROM users WHERE name REGEXP '^admin|admin$';
- Filter data target terlebih dahulu
SELECT * FROM users WHERE email LIKE 'a%' AND email REGEXP '^[a-zA-Z0-9._%+-]+@gmail\.com$';
5.2 Risiko Keamanan dan Tindakan Pencegahan
1. DoS Ekspresi Reguler (ReDoS)
- Hindari pencocokan tak terbatas seperti
.*. - Gunakan
^dan$untuk membatasi ruang pencarian. - Jangan mengirimkan input pengguna secara langsung ke
REGEXP.
2. Injeksi SQL dan Ekspresi Reguler
❌ Kueri tidak aman
SELECT * FROM users WHERE username REGEXP '$input';
✅ Kueri aman (gunakan placeholder)
$stmt = $pdo->prepare("SELECT * FROM users WHERE username REGEXP ?");
$stmt->execute([$sanitized_input]);
5.3 Kompatibilitas Versi
| Version | Main Features |
|---|---|
| MySQL 5.x | Only the REGEXP operator is available |
| MySQL 8.x | Adds REGEXP_LIKE(), REGEXP_INSTR(), REGEXP_SUBSTR(), and REGEXP_REPLACE() |
Ringkasan
- Karena
REGEXPtidak menggunakan indeks, langkah-langkah kinerja penting. - Untuk mencegah ReDoS (DoS Ekspresi Reguler), hindari penggunaan wildcard yang berlebihan.
- Untuk mencegah injeksi SQL, jangan menerapkan input pengguna secara langsung ke
REGEXP.
6. FAQ (Pertanyaan yang Sering Diajukan)
Berikut adalah pertanyaan umum tentang penggunaan ekspresi reguler MySQL (REGEXP). Menyelesaikan masalah ini akan membantu Anda menggunakan regex lebih efektif.
6.1 Pola regex apa yang dapat saya gunakan di MySQL?
| Symbol | Description | Example | Result |
|---|---|---|---|
. | Any single character | a.c | "abc", "aac", "adc" |
^ | Start of the string | ^abc | "abcde" (does not match "dabc") |
$ | End of the string | xyz$ | "axyz" (does not match "xyzb") |
[] | Any of the specified characters | [abc] | "a", "b", "c" |
[^] | Any character not in the specified set | [^abc] | Any character except "a", "b", "c" |
* | Repeat the preceding character 0 or more times | a* | "", "a", "aa", "aaa" |
+ | Repeat the preceding character 1 or more times | a+ | "a", "aa", "aaa" (does not match "") |
6.2 Apa perbedaan antara LIKE dan REGEXP?
| Comparison | LIKE | REGEXP |
|---|---|---|
| Functionality | Simple pattern matching | Searching with complex regular expressions |
| Wildcards | % (any string), _ (any single character) | .* (any string), ^, $, [a-z], etc. |
| Search speed | Fast because indexes can apply | Often slower due to full table scans |
| Use cases | Simple searches (contains, prefix matching, etc.) | Complex searches based on specific patterns |
✅ Karena LIKE lebih cepat, pilih LIKE untuk pencarian sederhana dan gunakan REGEXP ketika pencocokan kompleks diperlukan.
6.3 Apa perbedaan fitur regex antara MySQL 5.x dan MySQL 8.x?
| Version | Main Features |
|---|---|
| MySQL 5.x | Only the REGEXP operator is available |
| MySQL 8.x | Adds REGEXP_LIKE(), REGEXP_INSTR(), REGEXP_SUBSTR(), and REGEXP_REPLACE() |
6.4 Apa yang harus saya lakukan jika regex tidak berfungsi seperti yang diharapkan?
✅ Daftar Periksa
- Periksa apakah pelolosan (escaping) sudah benar
SELECT * FROM users WHERE email REGEXP '\.com$';
- Coba flag
idenganREGEXP_LIKE()SELECT * FROM users WHERE REGEXP_LIKE(username, 'admin', 'i');
- Periksa enkoding data
SHOW VARIABLES LIKE 'character_set_database';
6.5 Bagaimana saya dapat meningkatkan kinerja kueri REGEXP?
- Pra-filter dengan
LIKESELECT * FROM users WHERE email LIKE '%gmail.com' AND email REGEXP '^[a-zA-Z0-9._%+-]+@gmail\.com$';
- Gunakan indeks bila sesuai
ALTER TABLE users ADD FULLTEXT(email);
Ringkasan
REGEXPlebih kuat daripada LIKE, tetapi Anda harus memperhatikan kinerja.- Pada MySQL 8.0, fungsi regex baru (seperti
REGEXP_LIKE()) ditambahkan, memungkinkan pemrosesan yang lebih fleksibel. - Untuk meningkatkan kinerja: gabungkan dengan LIKE, gunakan indeks, dan rancang pola regex yang sederhana.
7. Ringkasan
Ekspresi reguler MySQL (REGEXP) sangat berguna untuk pencarian data, validasi, dan konversi format. Artikel ini membahas dasar-dasar regex MySQL, fitur baru yang ditambahkan di MySQL 8.0 dan versi selanjutnya, contoh praktis, pertimbangan penting, dan FAQ.
7.1 Poin Penting
Berikut rangkuman singkat dari poin-poin terpenting.
1. Dasar-dasar Ekspresi Reguler MySQL
- Menggunakan operator
REGEXPmemungkinkan pencocokan pola yang lebih fleksibel dibandingkanLIKE. - Pola regex umum
^(awal),$(akhir),.(karakter tunggal apa saja),[](kelas karakter),+(satu atau lebih pengulangan), dll.
2. Fungsi Ekspresi Reguler Baru di MySQL 8.0+
Pada MySQL 8.0, empat fungsi ini ditambahkan, memungkinkan pemrosesan yang lebih fleksibel:
REGEXP_LIKE(): alternatif untuk operatorREGEXPREGEXP_INSTR(): mendapatkan posisi awal substring yang cocokREGEXP_SUBSTR(): mengekstrak substring yang cocokREGEXP_REPLACE(): mengganti substring menggunakan regex
3. Contoh Praktis
- Validasi alamat email
- Pemeriksaan nomor telepon dan nomor kartu kredit
- Menghapus tag HTML
- Memvalidasi format kode pos
- Mendeteksi kata yang tidak diizinkan
- Pembersihan data (memangkas spasi, menghapus koma, dll.)
4. Pertimbangan Penting Saat Menggunakan Ekspresi Reguler
- Optimasi kinerja
- Karena
REGEXPtidak menggunakan indeks, dapat menghasilkan pemindaian seluruh tabel. - Anda dapat meningkatkan kinerja dengan menggabungkan indeks
LIKEatauFULLTEXT. - Langkah keamanan
- Untuk mencegah ReDoS (Regular Expression DoS), hindari penggunaan berlebihan
.*. - Untuk mencegah SQL injection, gunakan
placeholders.
5. FAQ (Pertanyaan yang Sering Diajukan)
- Pola regex yang tersedia di MySQL
- Perbedaan antara
LIKEdanREGEXP - Perbedaan fitur antara MySQL 5.x dan 8.x
- Pemecahan masalah ketika regex tidak berperilaku seperti yang diharapkan
- Cara meningkatkan kinerja
7.2 Praktik Terbaik Menggunakan Ekspresi Reguler
- Jaga pola regex tetap sederhana
- Contoh: Hindari penggunaan berlebihan
.*dan manfaatkan^(awal) serta$(akhir).
- Gabungkan dengan
LIKEatauFULLTEXTbila sesuai
- Prafiltrasi dengan
LIKE, kemudian terapkanREGEXPuntuk mengurangi biaya query.
- Gunakan
REGEXP_REPLACE()untuk pembersihan data
- Contoh: Hapus tag HTML dan normalisasi spasi yang tidak diperlukan.
- Manfaatkan MySQL 8.0 dan versi selanjutnya
- Menggunakan fungsi baru seperti
REGEXP_LIKE()dapat membuat SQL lebih mudah dibaca.
- Terapkan langkah keamanan secara menyeluruh
- Jangan menerapkan input pengguna secara langsung ke
REGEXP(pencegahan SQL injection). - Gunakan
placeholdersuntuk query dinamis.
7.3 Sumber Daya untuk Pembelajaran Lebih Lanjut
Berikut referensi untuk membantu Anda mempelajari ekspresi reguler MySQL secara mendalam.
Dokumentasi Resmi
7.4 Catatan Akhir
Ekspresi reguler MySQL dapat digunakan dalam banyak situasi, termasuk pencarian data, pembersihan, dan validasi. Namun, penting untuk menggunakannya secara tepat sambil memahami pertimbangan kinerja dan keamanan.
Kami harap artikel ini membantu Anda saat bekerja dengan ekspresi reguler MySQL. Cobalah menerapkan teknik ini dalam proyek Anda!


