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!

MySQL - Regular Expressions

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