Di MySQL, REGEXP_REPLACE()
fungsi menggantikan kemunculan substring dalam string yang cocok dengan pola ekspresi reguler yang diberikan.
Seluruh string dikembalikan bersama dengan penggantinya.
Jika tidak ada kecocokan (yaitu string input tidak berisi substring), seluruh string dikembalikan tidak berubah.
Sintaks
Sintaksnya seperti ini:
REGEXP_REPLACE(expr, pat, repl[, pos[, occurrence[, match_type]]])
Dimana expr
adalah string input dan pat
adalah pola ekspresi reguler untuk substring. repl
argumen adalah string pengganti.
pos
opsional argumen memungkinkan Anda untuk menentukan posisi dalam string untuk memulai pencarian. Jika dihilangkan, dimulai dari posisi 1.
occurrence
opsional argumen memungkinkan Anda untuk menentukan kemunculan kecocokan mana yang akan dicari. Jika dihilangkan, semua kemunculan akan diganti.
match_type
opsional argumen adalah string yang menentukan cara melakukan pencocokan. Ini memungkinkan Anda untuk memperbaiki ekspresi reguler. Misalnya, Anda dapat menggunakan argumen ini untuk menentukan pencocokan peka huruf besar-kecil atau tidak.
Contoh 1 – Penggunaan Dasar
Berikut ini contoh dasarnya:
SET @str = 'It was good'; SELECT @str 'Original String', REGEXP_REPLACE(@str, 'good', 'great!') 'Result';
Hasil:
+-----------------+---------------+ | Original String | Result | +-----------------+---------------+ | It was good | It was great! | +-----------------+---------------+
Dalam hal ini ada kecocokan, dan string dikembalikan dengan modifikasi.
Contoh 2 – Beberapa Kecocokan
Secara default, jika ada beberapa kecocokan dalam string, semuanya diganti:
SET @str = 'Cat Dog Cat Dog Cat'; SELECT @str 'Original String', REGEXP_REPLACE(@str, 'Cat', 'Tiger') 'Result';
Hasil:
+---------------------+---------------------------+ | Original String | Result | +---------------------+---------------------------+ | Cat Dog Cat Dog Cat | Tiger Dog Tiger Dog Tiger | +---------------------+---------------------------+
Namun, Anda juga memiliki opsi untuk menentukan kemunculan mana yang ingin Anda ganti (lebih lanjut tentang ini nanti).
Contoh 3 – Tidak Cocok
Berikut ini contoh di mana tidak ada kecocokan:
SET @str = 'Cat Dog Cat Dog Cat'; SELECT @str 'Original String', REGEXP_REPLACE(@str, 'Cow', 'Tiger') 'Result';
Hasil:
+---------------------+---------------------+ | Original String | Result | +---------------------+---------------------+ | Cat Dog Cat Dog Cat | Cat Dog Cat Dog Cat | +---------------------+---------------------+
Tidak ada kecocokan, sehingga string dikembalikan tidak berubah.
Contoh 4 – pos
Argumen
Berikut ini contoh penentuan posisi awal:
SET @str = 'Cat Dog Cat Dog Cat'; SELECT @str 'Original String', REGEXP_REPLACE(@str, 'Cat', 'Tiger', 2) 'Result';
Hasil:
+---------------------+-------------------------+ | Original String | Result | +---------------------+-------------------------+ | Cat Dog Cat Dog Cat | Cat Dog Tiger Dog Tiger | +---------------------+-------------------------+
Kita mulai dari posisi 2, yang muncul setelah awal kemunculan pertama, jadi operasi penggantian hanya memengaruhi kemunculan yang muncul setelah kemunculan pertama.
Contoh 5 – occurrence
Argumen
Seperti yang disebutkan, secara default, semua kemunculan diganti. Namun, Anda juga memiliki opsi untuk menentukan kejadian tertentu yang akan diganti dengan menggunakan occurrence
argumen. Ini contohnya:
SET @str = 'Cat Dog Cat Dog Cat'; SELECT @str 'Original String', REGEXP_REPLACE(@str, 'Cat', 'Tiger', 1, 2) 'Result';
Hasil:
+---------------------+-----------------------+ | Original String | Result | +---------------------+-----------------------+ | Cat Dog Cat Dog Cat | Cat Dog Tiger Dog Cat | +---------------------+-----------------------+
Dalam hal ini kita mulai dari posisi 1. Namun, jika kita mulai dari posisi yang berbeda, hasilnya berbeda:
SET @str = 'Cat Dog Cat Dog Cat'; SELECT @str 'Original String', REGEXP_REPLACE(@str, 'Cat', 'Tiger', 2, 2) 'Result';
Hasil:
+---------------------+-----------------------+ | Original String | Result | +---------------------+-----------------------+ | Cat Dog Cat Dog Cat | Cat Dog Tiger Dog Cat | +---------------------+-----------------------+
Ini terjadi karena posisi awal kami datang setelah kejadian pertama dimulai. Oleh karena itu, kejadian 2 menjadi kejadian 1, dan kejadian 3 menjadi kejadian 2.
Nilai default untuk argumen kemunculan adalah 0
, yang berarti semua kejadian diganti. Dengan kata lain, jika Anda menghilangkan argumen ini, semua kemunculan akan diganti (seperti yang telah kita lihat pada contoh sebelumnya). Berikut adalah contoh yang secara eksplisit menentukan semua kemunculan:
SET @str = 'Cat Dog Cat Dog Cat'; SELECT @str 'Original String', REGEXP_REPLACE(@str, 'Cat', 'Tiger', 1, 0) 'Result';
Hasil:
+---------------------+---------------------------+ | Original String | Result | +---------------------+---------------------------+ | Cat Dog Cat Dog Cat | Tiger Dog Tiger Dog Tiger | +---------------------+---------------------------+
Contoh 6 – match_type
Argumen
Anda dapat memberikan argumen tambahan untuk menentukan jenis pencocokan. Ini memungkinkan Anda untuk menentukan hal-hal seperti apakah kecocokan peka huruf besar-kecil atau tidak, apakah akan menyertakan terminator baris atau tidak, dll.
Berikut adalah contoh menentukan kecocokan peka huruf besar-kecil dan kecocokan peka huruf besar/kecil:
SET @str = 'Cat Dog Cat Dog Cat'; SELECT @str 'Original String', REGEXP_REPLACE(@str, 'cat', 'Tiger', 1, 0, 'c') 'Case-Sensitive', REGEXP_REPLACE(@str, 'cat', 'Tiger', 1, 0, 'i') 'Case-Insensitive';
Hasil:
+---------------------+---------------------+---------------------------+ | Original String | Case-Sensitive | Case-Insensitive | +---------------------+---------------------+---------------------------+ | Cat Dog Cat Dog Cat | Cat Dog Cat Dog Cat | Tiger Dog Tiger Dog Tiger | +---------------------+---------------------+---------------------------+
match_type
argumen dapat berisi karakter berikut:
c
- Pencocokan peka huruf besar/kecil.
i
- Pencocokan peka huruf besar/kecil.
m
- Mode banyak baris. Kenali terminator garis di dalam string. Perilaku default adalah mencocokkan terminator baris hanya di awal dan akhir ekspresi string.
n
.
karakter cocok dengan terminator garis. Standarnya adalah untuk.
cocok untuk berhenti di akhir baris.u
- Akhir baris khusus Unix. Hanya karakter baris baru yang dikenali sebagai baris yang diakhiri dengan
.
,^
, dan$
operator pertandingan.