MySQL - Regular Expressions
Halo, para penggemar basis data yang bersemangat! Hari ini, kita akan meluncur ke dalam dunia yang menarik dari Ekspresi Reguler MySQL. Jangan khawatir jika Anda belum pernah mengkode sebelumnya - kita akan mulai dari dasar dan naik tingkat per tingkat. Pada akhir panduan ini, Anda akan bisa menggunakannya seperti seorang ahli!
Apa Itu Ekspresi Reguler?
Sebelum kita masuk ke hal khusus MySQL, mari kita mengerti apa itu ekspresi reguler (regex). Bayangkan Anda mencari pola tertentu di dalam gandum tebal teks. Itu tempat regex berguna! Ini seperti alat pencarian supercharge yang dapat menemukan pola kompleks di string.
Ekspresi Reguler MySQL
Dalam MySQL, kita menggunakan operator REGEXP
untuk bekerja dengan ekspresi reguler. Ini mirip dengan operator LIKE
tapi jauh lebih kuat.
Sintaks Dasar
Ini adalah sintaks dasar:
SELECT column_name(s)
FROM table_name
WHERE column_name REGEXP 'pattern';
mari lihat beberapa contoh:
SELECT * FROM employees WHERE last_name REGEXP 'son';
Kueri ini akan menemukan semua karyawan yang namanya berisi 'son', seperti Johnson, Wilson, atau Sonny.
Kesensitifan Huruf
Secara default, regex MySQL adalah case-insensitive. Jika Anda ingin pencocokan case-sensitive, gunakan kata kunci BINARY
:
SELECT * FROM employees WHERE last_name REGEXP BINARY 'Smith';
Ini akan mencocokkan 'Smith' tetapi tidak 'smith' atau 'SMITH'.
Pola yang digunakan dengan REGEXP
Sekarang, mari kita jelajahi beberapa pola umum yang digunakan dengan REGEXP. Saya suka menganggap ini sebagai "kode rahasia" regex - sekali Anda mengetahuinya, Anda bisa menemukan hampir anything!
^ (Caret) - Awal String
Simbol caret mencocokkan pola di awal string.
SELECT * FROM products WHERE product_name REGEXP '^Apple';
Ini menemukan semua produk yang namanya dimulai dengan 'Apple', seperti 'Apple iPhone' atau 'Apple MacBook'.
$ (Dollar) - Akhir String
Tanda dollar mencocokkan pola di akhir string.
SELECT * FROM products WHERE product_name REGEXP 'Pro$';
Ini menemukan produk yang berakhir dengan 'Pro', seperti 'MacBook Pro' atau 'iPad Pro'.
. (Dot) - Karakter Mana saja
Dot mencocokkan karakter mana saja kecuali baris baru.
SELECT * FROM words WHERE word REGEXP 'c.t';
Ini mencocokkan kata-kata seperti 'cat', 'cut', atau bahkan 'c@t'!
* (Asterisk) - Nol atau Lebih Banyak Kekcemuan
Asterisk mencocokkan nol atau lebih banyak kekcemuan karakter sebelumnya.
SELECT * FROM emails WHERE email REGEXP 'info.*@example.com';
Ini mencocokkan email seperti '[email protected]', '[email protected]', atau bahkan '[email protected]'.
+ (Plus) - Satu atau Lebih Banyak Kekcemuan
Mirip dengan *, tetapi memerlukan setidaknya satu kekcemuan.
SELECT * FROM products WHERE product_name REGEXP 'iPad ?Pro+';
Ini mencocokkan 'iPad Pro', 'iPad Pro', 'iPad Pro', dll.
? (Question Mark) - Nol atau Satu Kekcemuan
Tanda tanya membuat karakter sebelumnya opsional.
SELECT * FROM words WHERE word REGEXP 'colou?r';
Ini mencocokkan baik 'color' maupun 'colour'.
[] (Square Brackets) - Set Karakter
Kotak-kotak persegi menentukan set karakter untuk dicocokkan.
SELECT * FROM employees WHERE last_name REGEXP '[AEIOU]';
Ini menemukan nama belakang yang mengandung vokal mana saja.
[^] (Set Karakter Tidak Valid)
Menambahkan tanda caret di dalam kotak persegi menolak set.
SELECT * FROM products WHERE product_name REGEXP '[^0-9]';
Ini menemukan nama produk yang tidak mengandung angka apa pun.
| (Pipe) - Alternasi
Simbol pipa bertindak seperti operator OR.
SELECT * FROM animals WHERE species REGEXP 'cat|dog';
Ini menemukan semua kucing dan anjing di tabel hewan kami.
Fungsi dan Operator Ekspresi Reguler
MySQL menyediakan beberapa fungsi dan operator untuk bekerja dengan ekspresi reguler. Mari kita jelajahi mereka:
Fungsi/Operator | Deskripsi |
---|---|
REGEXP | Mencocokkan string terhadap ekspresi reguler |
REGEXP_LIKE() | Mengembalikan 1 jika string cocok dengan pola regex, 0 jika tidak |
REGEXP_INSTR() | Mengembalikan indeks awal pertama cocok regex |
REGEXP_REPLACE() | Mengganti substrings yang cocok dengan pola regex |
REGEXP_SUBSTR() | Mengembalikan substring yang cocok dengan pola regex |
Mari lihat beberapa contoh:
REGEXP_LIKE()
SELECT * FROM products WHERE REGEXP_LIKE(product_name, '^iPhone');
Ini menemukan semua produk yang namanya dimulai dengan 'iPhone'.
REGEXP_INSTR()
SELECT email, REGEXP_INSTR(email, '@') AS at_position
FROM users;
Ini mengembalikan posisi simbol '@' di setiap alamat email.
REGEXP_REPLACE()
SELECT REGEXP_REPLACE('Hello, World!', '[aeiou]', '*') AS vowels_replaced;
Ini mengganti semua vokal dengan bintang, mengembalikan 'Hll, W*rld!'.
REGEXP_SUBSTR()
SELECT REGEXP_SUBSTR('[email protected]', '[^@]+') AS username;
Ini mengekstrak bagian pengguna dari alamat email.
Kesimpulan
Selamat! Anda baru saja mengambil langkah pertama ke dalam dunia yang kuat dari ekspresi reguler MySQL. Ingat, latihan membuat sempurna. Cobalah untuk membuat pola regex Anda sendiri dan eksperimen dengan kombinasi yang berbeda.
Sebagai Anda terus melanjutkan perjalanan Anda, Anda akan menemukan bahwa regex adalah seperti pisau瑞士 Army knife di dalam kotak peralatan basis data Anda. Itu mungkin terlihat sedikit sulit pada awalnya, tetapi sekali Anda mengenalinya, Anda akan bertanya-tanya bagaimana Anda pernah mengelola tanpanya!
Selamat berkoding, dan semoga kueri Anda selalu mengembalikan hasil yang Anda inginkan!
Credits: Image by storyset