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!

MySQL - Regular Expressions

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