Di MySQL, REGEXP_SUBSTR()
fungsi mengembalikan substring yang cocok dengan pola ekspresi reguler yang diberikan.
Jika tidak ada kecocokan (yaitu string input tidak berisi substring), hasilnya adalah NULL
.
Sintaks
Sintaksnya seperti ini:
REGEXP_SUBSTR(expr, pat[, pos[, kejadian[, match_type]]])
Dimana expr
adalah string input dan pat
adalah pola ekspresi reguler untuk substring.
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, kemunculan pertama digunakan (kejadian 1).
match_type
opsional argumen 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:
SELECT REGEXP_SUBSTR('Thailand or Cambodia', 'l.nd') Hasil;
Hasil:
+--------+| Hasil |+--------+| tanah |+--------+
Dalam hal ini ada kecocokan, dan substring dikembalikan.
Contoh 2 – Beberapa Kecocokan
Secara default, jika ada beberapa kecocokan dalam string, yang pertama dikembalikan (walaupun Anda dapat menentukan kemunculan lain jika diperlukan. Kami akan segera membahasnya):
SELECT REGEXP_SUBSTR('Lend for land', 'l.nd') Result;
Hasil:
+--------+| Hasil |+--------+| Pinjam |+--------+
Contoh 3 – Tidak Cocok
Berikut ini contoh di mana tidak ada kecocokan:
SELECT REGEXP_SUBSTR('Lend for land', '^C') Result;
Hasil:
+--------+| Hasil |+--------+| NULL |+--------+
Tidak ada yang cocok, jadi hasilnya NULL
.
Contoh 4 – pos
Argumen
Berikut ini contoh menentukan posisi awal:
SELECT REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 2) Hasil;
Hasil:
+--------+| Hasil |+--------+| Potong |+--------+
Kami mulai di posisi 2, yang muncul setelah awal kemunculan pertama, jadi kemunculan berikutnya dikembalikan sebagai gantinya.
Ini contoh lain:
SELECT REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 1) 'Pos 1', REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 2) 'Pos 2', REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 6) 'Pos 6';
Hasil:
+-------+-------+-------+| Pos 1 | Pos 2 | Pos 6 |+-------+-------+-------+| Kucing | Potong | Tempat Tidur Bayi |+-------+-------+-------+
Contoh 5 – occurrence
Argumen
Berikut ini contoh penggunaan occurrence
argumen. Dalam semua kasus, kita mulai dari posisi 1:
SELECT REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 1, 1) 'Occurrence 1', REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 1, 2) 'Occurrence 2', REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 1, 3) 'Occurrence 3';
Hasil:
+-------------+--------------+--------------+| Kejadian 1 | Kejadian 2 | Kejadian 3 |+--------------+--------------+--------------+| Kucing | Potong | Cot |+--------------+--------------+--------------+Namun, jika kita mulai dari posisi yang berbeda, hasilnya berbeda:
SELECT REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 2, 1) 'Occurrence 1', REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 2, 2) 'Occurrence 2', REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 2, 3) 'Occurrence 3';Hasil:
+-------------+--------------+--------------+| Kejadian 1 | Kejadian 2 | Kejadian 3 |+--------------+--------------+--------------+| Potong | Ranjang bayi | NULL |+--------------+--------------+--------------+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. Dan karena tidak ada kejadian lagi, hasil kejadian 3 adalah NULL (yaitu tidak ada kejadian 3).
Contoh 6 –
match_type
ArgumenAnda 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:
SELECT REGEXP_SUBSTR('Cat Cut Cot', 'c.t', 1, 1, 'c') 'Case-Sensitive', REGEXP_SUBSTR('Cat Cut Cot', 'c.t', 1, 1, 'i') 'Peka Huruf Besar-kecil';Hasil:
+----------------+------------------+| Peka Huruf Besar-kecil | Tidak peka huruf besar/kecil |+----------------+------------------+| NULL | Kucing |+----------------+------------------+
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.