Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana Fungsi REGEX_REPLACE() Bekerja di MySQL

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.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lima aplikasi perangkat lunak teratas untuk mengakses server MySQL/MariaDB

  2. Cara Mendapatkan Meta Data Basis Data

  3. Apakah koneksi server MySQL saya terenkripsi dan aman?

  4. KIRI GABUNG hanya baris pertama

  5. Cara Memuat Konfigurasi JDBC Dari Contoh File Properties