MySQL - REGEXP_REPLACE() Fungsi

Hai teman-teman, penggemar MySQL yang ambisius! Hari ini, kita akan masuk ke dunia yang menarik dari fungsi REGEXP_REPLACE(). Jangan khawatir jika Anda baru saja belajar pemrograman; saya akan memandu Anda secara langkah demi langkah, sama seperti yang saya lakukan untuk ribuan murid selama tahun-tahun mengajar saya. mari kita sisir lengan dan mulai!

MySQL - regexp_replace() Function

Apa Itu REGEXP_REPLACE()?

Sebelum kita masuk ke hal yang mendalam, mari kita pahami apa sebenarnya REGEXP_REPLACE() lakukan. Bayangkan Anda memiliki penghapus ajaib yang dapat mencari pola tertentu dalam teks Anda dan menggantinya dengan sesuatu yang lain. Itu sebenarnya apa yang dilakukan REGEXP_REPLACE() di MySQL!

REGEXP_REPLACE() adalah fungsi yang mencari string untuk pola (menggunakan ekspresi regular) dan mengganti semua kemunculan pola tersebut dengan string pengganti yang ditentukan. Itu seperti alat "cari dan ganti" super kuat dalam kitab alat basis data Anda.

Sintaks Dasar

Berikut adalah cara Anda menggunakan fungsi REGEXP_REPLACE():

REGEXP_REPLACE(subjek, pola, pengganti)
  • subjek: String yang Anda ingin cari
  • pola: Pola ekspresi regular yang Anda cari
  • pengganti: apa yang Anda ingin mengganti pola yang cocok

Sekarang, mari kita lihat fungsi ini dalam tindakan dengan beberapa contoh!

Penggantian Teks Sederhana

Mari kita mulai dengan contoh yang sederhana:

SELECT REGEXP_REPLACE('Hello, World!', 'World', 'MySQL') AS hasil;

Kueri ini akan mengembalikan:

+----------------+
| hasil          |
+----------------+
| Hello, MySQL!  |
+----------------+

Apa yang terjadi disini? Kita meminta MySQL untuk melihat string 'Hello, World!', mencari kata 'World', dan menggantinya dengan 'MySQL'. Mudah, kan?

Menggunakan Ekspresi Regular

Sekarang, mari kita menambahkan sedikit magi ekspresi regular:

SELECT REGEXP_REPLACE('The quick brown fox', '[aeiou]', '*') AS hasil;

Ini akan memberikan kita:

+----------------------+
| hasil               |
+----------------------+
| Th* q**ck br*wn f*x  |
+----------------------+

Whoa! Apa sihir ini? Well, [aeiou] adalah ekspresi regular yang cocok dengan setiap vokal. Jadi, fungsi kita mengganti setiap vokal dengan bintang (*). Sangat keren, kan?

Penggantian Tak Pecaya Huruf Besar/Kecil

mari kita katakan Anda ingin mengganti sebuah kata tanpa menghiraukan kasusnya. Berikut adalah cara Anda bisa melakukannya:

SELECT REGEXP_REPLACE('The APPLE doesn't fall far from the apple tree', '(?i)apple', 'orange') AS hasil;

Hasil:

+-----------------------------------------------+
| hasil                                        |
+-----------------------------------------------+
| The orange doesn't fall far from the orange tree |
+-----------------------------------------------+

(?i) di awal pola membuat pencarian tak peka huruf besar/kecil. Jadi, baik 'APPLE' maupun 'apple' diganti.

Mengganti Beberapa Kemunculan

REGEXP_REPLACE() mengganti semua kemunculan pola secara default. mari kita lihat contoh:

SELECT REGEXP_REPLACE('one fish, two fish, red fish, blue fish', 'fish', 'cat') AS hasil;

Ini memberikan kita:

+----------------------------------------+
| hasil                                 |
+----------------------------------------+
| one cat, two cat, red cat, blue cat    |
+----------------------------------------+

Setiap 'fish' menjadi 'cat'! Saya harap Anda tidak alergi terhadap kucing. ?

REGEXP_REPLACE() dalam Klause WHERE

REGEXP_REPLACE() tidak hanya untuk pernyataan SELECT. Anda juga bisa menggunakannya dalam klause WHERE! mari kita buat tabel sederhana dan lihat bagaimana ini bekerja:

CREATE TABLE karyawan (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
phone VARCHAR(20)
);

INSERT INTO karyawan (name, phone) VALUES
('John Doe', '123-456-7890'),
('Jane Smith', '987-654-3210'),
('Bob Johnson', '456-789-0123');

SELECT * FROM karyawan WHERE REGEXP_REPLACE(phone, '-', '') LIKE '123%';

Kueri ini akan mengembalikan:

+----+----------+--------------+
| id | name     | phone        |
+----+----------+--------------+
|  1 | John Doe | 123-456-7890 |
+----+----------+--------------+

Di sini, kita menghapus semua tanda silang dari nomor telepon (REGEXP_REPLACE(phone, '-', '')) dan kemudian memeriksa jika hasilnya dimulai dengan '123'.

Fungsi REGEXP_REPLACE() Menggunakan Program Klien

Sekarang, mari kita lihat bagaimana kita bisa menggunakan REGEXP_REPLACE() dalam program klien. Saya akan menggunakan Python sebagai contoh, tapi konsepnya sama untuk bahasa pemrograman lainnya.

import mysql.connector

# Terhubung ke basis data MySQL
cnx = mysql.connector.connect(user='your_username', password='your_password',
host='127.0.0.1', database='your_database')
cursor = cnx.cursor()

# Eksekusi kueri menggunakan REGEXP_REPLACE()
query = "SELECT REGEXP_REPLACE('Hello, World!', 'World', 'Python') AS hasil"
cursor.execute(query)

# Fetch dan cetak hasil
result = cursor.fetchone()
print(f"Hasil: {result[0]}")

# Tutup koneksi
cursor.close()
cnx.close()

Skrip ini terhubung ke basis data MySQL, menjalankan kueri REGEXP_REPLACE() kita, dan mencetak hasilnya. Outputnya akan menjadi:

Hasil: Hello, Python!

Dan itu saja! Kita telah mengeksplorasi fungsi REGEXP_REPLACE() dari penggantian sederhana hingga pemadanan pola yang lebih kompleks. Ingat, latihan membuat sempurna. Jadi, jangan ragu untuk mencoba pola dan string pengganti yang berbeda.

Sebelum kita selesai, ini adalah tabel ringkasan tentang fungsi REGEXP_REPLACE():

Aspek Deskripsi
Sintaks REGEXP_REPLACE(subjek, pola, pengganti)
Tujuan Mengganti semua kemunculan pola dalam string
Pola Menggunakan ekspresi regular untuk pemadanan fleksibel
Pecahan Huruf Bisa dijadikan tak peka huruf besar/kecil dengan (?i)
Kemunculan Mengganti semua kemunculan secara default
Penggunaan Bisa digunakan dalam SELECT, WHERE, dan klausa SQL lain

Ingat, kekuatan REGEXP_REPLACE() berada dalam fleksibilitasnya. Dengan ekspresi regular, Anda dapat membuat aturan pemadanan pola kompleks untuk memanipulasi data Anda seperti yang Anda inginkan. Selamat coding, dan semoga kueri Anda selalu mengembalikan hasil yang Anda harapkan!

Credits: Image by storyset