Di MariaDB, 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 string kosong.
Sintaks
Sintaksnya seperti ini:
REGEXP_SUBSTR(subject,pattern)
Dimana subject adalah string input dan pattern adalah pola ekspresi reguler untuk substring.
Perhatikan bahwa, pada saat penulisan, versi REGEXP_SUBSTR() MariaDB menerima argumen lebih sedikit daripada REGEXP_SUBSTR() MySQL . Versi MySQL memungkinkan Anda memberikan argumen untuk posisi awal pencarian, kemunculan mana yang akan dicari, serta cara untuk menyaring ekspresi reguler.
Contoh
Berikut ini contoh dasarnya:
SELECT REGEXP_SUBSTR('Thailand and Laos', 'l.nd'); Hasil:
+--------------------------------------------+| REGEXP_SUBSTR('Thailand and Laos', 'l.nd') |+---------------------------------- ----------+| tanah |+--------------------------------------------+
Dalam hal ini ada kecocokan, dan substring dikembalikan.
Beberapa Kecocokan
Secara default, jika ada beberapa kecocokan dalam string, yang pertama dikembalikan:
SELECT REGEXP_SUBSTR('Lend for land', 'l.nd');
Hasil:
+---------------------------------------+| REGEXP_SUBSTR('Meminjamkan tanah', 'l.nd') |+---------------------------------- ------+| Pinjam |+---------------------------------------+ Tidak Cocok
Berikut ini contoh di mana tidak ada kecocokan:
SELECT REGEXP_SUBSTR('Lend for land', '^C');
Hasil:
+--------------------------------------+| REGEXP_SUBSTR('Meminjamkan tanah', '^C') |+----------------------------------- ---+| |+---------------------------------------+
Tidak ada yang cocok, jadi hasilnya adalah string kosong.
Sensitivitas Huruf Besar
REGEXP_SUBSTR() fungsi mengikuti aturan sensitivitas huruf dari susunan yang efektif. Pencocokan dilakukan dengan tidak peka huruf besar/kecil untuk susunan huruf besar/kecil, dan peka huruf besar/kecil untuk susunan huruf besar/kecil dan untuk data biner.
Ini contohnya:
SELECT
REGEXP_SUBSTR('My Cats', 'c.t') AS "My Default",
REGEXP_SUBSTR(_latin7'My Cats' COLLATE latin7_general_ci, 'c.t') AS "Case Insensitive",
REGEXP_SUBSTR(_latin7'My Cats' COLLATE latin7_general_cs, 'c.t') AS "Case Sensitive";
Hasil:
+-------------+------------------+-------------- --+| Default Saya | Tidak peka huruf besar/kecil | Peka Huruf Besar |+------------+------------------+------------- --+| Kucing | Kucing | |+------------+------------------+---------------- +
Susunan default saya tidak peka huruf besar-kecil. Dua string lainnya dipaksa ke susunan case-sensitive dan collation case sensitive masing-masing.
Memberikan BINARY string juga peka huruf besar/kecil (lihat di bawah).
String Biner
Melewati BINARY string juga mempengaruhi sensitivitas kasus. Dengan BINARY string, karakter huruf besar berbeda dengan huruf kecilnya:
Contoh:
SELECT
REGEXP_SUBSTR('My Cats', 'c.t') AS "Character",
REGEXP_SUBSTR(BINARY 'My Cats', 'c.t') AS "Binary";
Hasil:
+-----------+--------+| Karakter | Biner |+------------+--------+| Kucing | |+-----------+--------+
Inilah yang terjadi jika kita mengubah kasusnya:
SELECT
REGEXP_SUBSTR('My Cats', 'C.t') AS "Character",
REGEXP_SUBSTR(BINARY 'My Cats', 'C.t') AS "Binary";
Hasil:
+-----------+--------+| Karakter | Biner |+------------+--------+| Kucing | Kucing |+-----------+--------+
Argumen Null
Melewati null karena argumen apa pun menghasilkan null :
SELECT
REGEXP_SUBSTR(null, 'c.t') AS "1",
REGEXP_SUBSTR('Cat', null) AS "2",
REGEXP_SUBSTR(null, null) AS "3";
Hasil:
+------+------+------+| 1 | 2 | 3 |+------+------+------+| NULL | NULL | NULL |+------+------+------+
Jumlah Argumen Salah
Melewati jumlah argumen yang salah atau tidak ada argumen, menghasilkan kesalahan:
SELECT REGEXP_SUBSTR('Cat');
Hasil:
ERROR 1582 (42000):Jumlah parameter salah dalam panggilan ke fungsi asli 'REGEXP_SUBSTR'