MySQL - Ekspresi Reguler
Halo, para penggemar basis data yang bersemangat! Hari ini, kita akan melamun ke dalam dunia yang menarik dari MySQL Ekspresi Reguler. Jangan khawatir jika Anda belum pernah mengkode sebelumnya - kita akan mulai dari dasar dan naik turun secara bertahap. Pada akhir panduan ini, Anda akan bisa memanfaatkan ekspresi reguler seperti seorang ahli!
Apa Itu Ekspresi Reguler?
Sebelum kita masuk ke hal-hal spesifik MySQL, mari kita pahami apa itu ekspresi reguler (regex). Bayangkan Anda mencari pola tertentu di antara sekumpulan teks. Itu adalah tempat regex berguna! Itu seperti alat pencari super yang dapat menemukan pola kompleks di string.
Ekspresi Reguler MySQL
Dalam MySQL, kita menggunakan operator REGEXP
untuk bekerja dengan ekspresi reguler. Itu 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 terakhir mengandung '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 cocok '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 cocok dengan 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 cocok dengan 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 cocok dengan karakter tunggal apa saja kecuali baris baru.
SELECT * FROM words WHERE word REGEXP 'c.t';
Ini cocok dengan kata-kata seperti 'cat', 'cut', atau bahkan 'c@t'!
* (Asterisk) - Nol atau Lebih Banyak Kecurrence
Asterisk cocok dengan nol atau lebih banyak kecurrence karakter sebelumnya.
SELECT * FROM emails WHERE email REGEXP 'info.*@example.com';
Ini cocok dengan email seperti '[email protected]', '[email protected]', atau bahkan '[email protected]'.
+ (Plus) - Satu atau Lebih Banyak Kecurrence
Mirip dengan *, tapi memerlukan setidaknya satu kecurrence.
SELECT * FROM products WHERE product_name REGEXP 'iPad ?Pro+';
Ini cocok dengan 'iPad Pro', 'iPad Pro', 'iPad Pro', dll.
? (Question Mark) - Nol atau Satu Kecurrence
Tanda tanya membuat karakter sebelumnya opsional.
SELECT * FROM words WHERE word REGEXP 'colou?r';
Ini cocok dengan 'color' dan 'colour'.
[] (Square Brackets) - Set Karakter
Kotak sudut menentukan set karakter untuk dicocokkan.
SELECT * FROM employees WHERE last_name REGEXP '[AEIOU]';
Ini menemukan nama belakang yang mengandung huruf vokal apa saja.
[^] (Set Karakter Dinolkan)
Menambahkan caret di dalam kotak sudut menolak set.
SELECT * FROM products WHERE product_name REGEXP '[^0-9]';
Ini menemukan nama produk yang tidak mengandung angka apa pun.
| (Pipe) - Alternatif
Simbol pipa berperan 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 | Cocokkan 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 membuat pola regex Anda sendiri dan eksperimen dengan kombinasi yang berbeda.
Sebagai Anda terus mengembangkan pengetahuan Anda, Anda akan menemukan bahwa regex adalah seperti pisau瑞士 Army knife di dalam peralatan basis data Anda. Itu mungkin tampak sulit pada awalnya, tapi setelah Anda menguasainya, Anda akan bertanya-tanya bagaimana Anda pernah mengelola tanpanya!
Selamat mengkode, dan semoga kueri Anda selalu mengembalikan hasil yang Anda inginkan!
Credits: Image by storyset