AnalyticDB for MySQL mendukung fungsi ekspresi reguler berikut untuk pencocokan pola, ekstraksi, dan penggantian dalam kueri SQL.
REGEXP_INSTR — mengembalikan posisi suatu kecocokan
REGEXP_MATCHES — mengembalikan array semua substring yang cocok
REGEXP_REPLACE — mengganti substring yang cocok
REGEXP_SUBSTR — mengembalikan substring yang cocok
Prasyarat
Sebelum memulai, pastikan bahwa:
Versi mesin minor kluster AnalyticDB for MySQL adalah 3.1.5.10 atau lebih baru.
Untuk memeriksa versi mesin minor, lihat Bagaimana cara melihat versi kluster AnalyticDB for MySQL?
REGEXP_INSTR
regexp_instr(source, pattern[, position[, occurrence[, option]]])Mengembalikan bilangan bulat yang menunjukkan posisi awal atau akhir substring pertama (atau ke-N) dalam source yang sesuai dengan pattern. Mengembalikan 0 jika tidak ditemukan kecocokan.
Parameter
Wajib:
| Parameter | Tipe | Deskripsi |
|---|---|---|
source | VARCHAR | String yang akan dicari. |
pattern | — | Ekspresi reguler yang digunakan untuk pencocokan. |
Opsional:
| Parameter | Tipe | Default | Deskripsi |
|---|---|---|---|
position | BIGINT | 1 | Posisi karakter dalam source tempat pencocokan dimulai. |
occurrence | BIGINT | 1 | Kecocokan ke berapa yang akan dikembalikan. |
option | BIGINT | 0 | Mengontrol apakah akan mengembalikan posisi awal kecocokan (0) atau posisi tepat setelah akhir kecocokan (1). |
Nilai kembalian
Mengembalikan BIGINT. Mengembalikan 0 jika tidak ditemukan kecocokan.
Contoh
Mengembalikan posisi awal kecocokan pertama
SELECT REGEXP_INSTR('dog cat dog', 'dog') as res;+-----+
| res |
+-----+
| 1 |
+-----+Mengembalikan posisi awal kecocokan kedua
SELECT REGEXP_INSTR('dog cat dog', 'dog', 1, 2) as res;+-----+
| res |
+-----+
| 9 |
+-----+Mengembalikan posisi setelah akhir kecocokan pertama
SELECT REGEXP_INSTR('dog cat dog', 'dog', 1, 1, 1) as res;+-----+
| res |
+-----+
| 4 |
+-----+REGEXP_MATCHES
regexp_matches(source, pattern[, flag])Mengembalikan ARRAY(ARRAY(VARCHAR)) dari semua substring dalam source yang sesuai dengan pattern. Mengembalikan array kosong jika tidak ditemukan kecocokan.
Tanpa flag
g: hanya mengembalikan kecocokan pertama.Dengan flag
g: mengembalikan semua kecocokan.Jika
patternberisi capture groups, substring yang cocok dari setiap grup dikembalikan sebagai array bersarang. Jika tidak, kecocokan lengkap dikembalikan.
Untuk mendapatkan string yang cocok tunggal alih-alih array, gunakan REGEXP_SUBSTR.
Parameter
Wajib:
| Parameter | Tipe | Deskripsi |
|---|---|---|
source | VARCHAR | String yang akan dicari. |
pattern | — | Ekspresi reguler yang digunakan untuk pencocokan. |
Opsional:
| Parameter | Tipe | Deskripsi |
|---|---|---|
flag | VARCHAR | Satu atau beberapa karakter yang mengontrol perilaku pencocokan. Gunakan g untuk mengembalikan semua kecocokan alih-alih hanya yang pertama. |
Nilai kembalian
Mengembalikan ARRAY(ARRAY(VARCHAR)). Mengembalikan array kosong jika tidak ditemukan kecocokan.
Contoh
Pencocokan dengan capture groups (hanya kecocokan pertama)
SELECT regexp_matches('foobarbequebaz', '(bar)(beque)');+---------------------+
| regexp_matches |
+---------------------+
| [["bar","beque"]] |Pencocokan tanpa capture groups
SELECT regexp_matches('foobarbequebaz', 'barbeque');+---------------------+
| regexp_matches |
+---------------------+
| [["barbeque"]] |Pencocokan semua kemunculan menggunakan flag `g`
SELECT regexp_matches('foobarbequebazilbarfbonk', '(b[^b]+)(b[^b]+)', 'g');+------------------------------------------+
| regexp_matches |
+------------------------------------------+
| [["bar","beque"], ["bazil","barf"]] |REGEXP_REPLACE
regexp_replace(source, pattern, replacement[, position[, occurrence]])Mengganti substring dalam source yang sesuai dengan pattern dengan replacement. Secara default, mengganti semua kecocokan mulai dari karakter pertama. Mengembalikan string asli jika tidak ditemukan kecocokan.
Parameter
Wajib:
| Parameter | Tipe | Deskripsi |
|---|---|---|
source | VARCHAR | String yang akan dicari. |
pattern | — | Ekspresi reguler yang digunakan untuk pencocokan. |
replacement | VARCHAR | String yang akan menggantikan setiap kecocokan. |
Opsional:
| Parameter | Tipe | Default | Deskripsi |
|---|---|---|---|
position | BIGINT | 1 | Posisi karakter dalam source tempat pencocokan dimulai. |
occurrence | BIGINT | 0 | Kecocokan ke berapa yang akan diganti. 0 mengganti semua kecocokan; bilangan bulat positif hanya mengganti kecocokan tersebut. |
Nilai kembalian
Mengembalikan VARCHAR. Mengembalikan string asli jika tidak ditemukan kecocokan.
Contoh
Mengganti semua kecocokan
SELECT REGEXP_REPLACE('abc def ghi', '[a-z]+', 'X') as res;+-------+
| res |
+-------+
| X X X |
+-------+Mengganti hanya kecocokan ketiga
SELECT REGEXP_REPLACE('abc def ghi', '[a-z]+', 'X', 1, 3) as res;+-----------+
| res |
+-----------+
| abc def X |
+-----------+REGEXP_SUBSTR
regexp_substr(source, pattern[, position[, occurrence]])Mengembalikan substring dalam source yang sesuai dengan pattern. Mengembalikan NULL jika tidak ditemukan kecocokan.
Parameter
Wajib:
| Parameter | Tipe | Deskripsi |
|---|---|---|
source | VARCHAR | String yang akan dicari. |
pattern | — | Ekspresi reguler yang digunakan untuk pencocokan. |
Opsional:
| Parameter | Tipe | Default | Deskripsi |
|---|---|---|---|
position | BIGINT | 1 | Posisi karakter dalam source tempat pencocokan dimulai. |
occurrence | BIGINT | 1 | Kecocokan ke berapa yang akan dikembalikan. |
Nilai kembalian
Mengembalikan VARCHAR. Mengembalikan NULL jika tidak ditemukan kecocokan.
Contoh
Mengembalikan kecocokan ketiga
SELECT REGEXP_SUBSTR('abc def ghi', '[a-z]+', 1, 3) as res;+------+
| res |
+------+
| ghi |
+------+Mengembalikan kecocokan pertama (perilaku default)
SELECT REGEXP_SUBSTR('abc def ghi', '[a-z]+') as res;+------+
| res |
+------+
| abc |
+------+