MariaDB
 sql >> Teknologi Basis Data >  >> RDS >> MariaDB

Bagaimana REGEXP_SUBSTR() Bekerja di MariaDB

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'

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perbaiki Kesalahan 1064 (42000) saat menggunakan Operator MINUS di MariaDB

  2. MariaDB JSON_ARRAY_APPEND() Dijelaskan

  3. MariaDB JSON_MERGE_PATCH() Dijelaskan

  4. Bagaimana SUBTIME() Bekerja di MariaDB

  5. Cara Mendeteksi jika suatu Nilai Berisi Setidaknya Satu Digit Numerik di MariaDB