MySQL - REGEXP_REPLACE() Function

Hai there, penggemar MySQL yang bersemangat! Hari ini, kita akan mendalami dunia yang menarik dari fungsi REGEXP_REPLACE(). Jangan khawatir jika Anda baru belajar pemrograman; saya akan memandu Anda dalam perjalanan ini secara langkah demi langkah, seperti yang telah saya lakukan bagi ribuan murid selama tahun-tahun mengajar saya. mari kita lipatkan lengan dan mulai!

MySQL - regexp_replace() Function

Apa Itu REGEXP_REPLACE()?

Sebelum kita melompat ke hal-hal yang rumit, mari kita pahami apa sebenarnya REGEXP_REPLACE() lakukan. Bayangkan Anda memiliki penghapus ajaib yang dapat menemukan pola tertentu dalam teks Anda dan menggantinya dengan sesuatu lain. Itu adalah esensi apa yang dilakukan REGEXP_REPLACE() di MySQL!

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

Sintaks Dasar

Berikut adalah cara Anda menggunakan fungsi REGEXP_REPLACE():

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

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

Penggantian Teks Sederhana

Mari 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 mengatakan ke MySQL untuk melihat string 'Hello, World!', menemukan 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  |
+----------------------+

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

Penggantian Tidak Sensitif terhadap Huruf Besar/Kecil

mari kita katakan Anda ingin mengganti sebuah kata tanpa memperhatikan kasusnya. Berikut cara Anda 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 kita membuat pencarian tidak sensitif terhadap huruf besar/kecil. Jadi, baik 'APPLE' maupun 'apple' diganti.

Mengganti Beberapa Kemunculan

REGEXP_REPLACE() mengganti semua kemunculan pola secara default. Mari 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 Klorauses WHERE

REGEXP_REPLACE() tidak hanya untuk pernyataan SELECT. Anda juga dapat menggunakannya dalam klorauses 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 apakah hasilnya dimulai dengan '123'.

Fungsi REGEXP_REPLACE() Menggunakan Program Klien

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

import mysql.connector

# Hubungi 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)

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

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

Skrip ini menghubungi 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 praktis yang menyummarisikan 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
Kesensitifan Kasus Dapat dibuat tidak sensitif terhadap huruf besar/kecil dengan (?i)
Kemunculan Mengganti semua kemunculan secara default
Penggunaan Dapat digunakan dalam SELECT, WHERE, dan klausa SQL lainnya

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 harap!

Credits: Image by storyset