MariaDB
 sql >> база данни >  >> RDS >> MariaDB

Как REGEXP_SUBSTR() работи в MariaDB

В MariaDB, REGEXP_SUBSTR() функцията връща подниз, който съответства на дадения модел на регулярен израз.

Ако няма съвпадение (т.е. входният низ не съдържа подниза), резултатът е празен низ.

Синтаксис

Синтаксисът е така:

REGEXP_SUBSTR(subject,pattern) 

Където subject е входният низ и pattern е шаблонът на регулярния израз за подниза.

Имайте предвид, че към момента на писане версията на MariaDB на REGEXP_SUBSTR() приема по-малко аргументи от REGEXP_SUBSTR() на MySQL . Версията на MySQL ви позволява да предоставите аргументи за началната позиция на търсенето, коя поява да търсите, както и начин за прецизиране на регулярния израз.

Пример

Ето един основен пример:

SELECT REGEXP_SUBSTR('Thailand and Laos', 'l.nd'); 

Резултат:

+----------------------------------------------+| REGEXP_SUBSTR('Тайланд и Лаос', 'l.nd') |+---------------------------------- ----------+| земя |+----------------------------------------------+ 

В този случай има съвпадение и поднизът се връща.

Множество съвпадения

По подразбиране, ако има няколко съвпадения в низа, първото се връща:

SELECT REGEXP_SUBSTR('Lend for land', 'l.nd'); 

Резултат:

+---------------------------------------+| REGEXP_SUBSTR('Заем за земя', 'l.nd') |+---------------------------------- ------+| Давам на заем |+-----------------------------------+

Няма съвпадение

Ето пример, където няма съвпадение:

SELECT REGEXP_SUBSTR('Lend for land', '^C'); 

Резултат:

+----------------------------------------+| REGEXP_SUBSTR('Заем за земя', '^C') |+---------------------------------- ---+| |+----------------------------------------+

Няма съвпадение, така че резултатът е празен низ.

Чувствителност на регистрите

REGEXP_SUBSTR() функцията следва правилата за чувствителност към малки и големи букви на ефективното съпоставяне. Съпоставянето се извършва независимо от главните и малки букви за съпоставянията без малки и големи букви и чувствителни към малките букви за съпоставянията, чувствителни към малки и големи букви и за двоични данни.

Ето един пример:

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"; 

Резултат:

+------------+-----------------+-------------- --+| Моята по подразбиране | Нечувствителни към главни букви | Чувствителен на главни букви |+------------+-----------------+-------------- --+| Котка | Котка | |+-----------+------------------+---------------- +

Моето съпоставяне по подразбиране е независимо от главните букви. Другите два низа бяха принудени към съпоставяне, независимо от главните и главни букви, съответно.

Предоставяне на BINARY низът също е чувствителен към малки и големи букви (вижте по-долу).

Двоични низове

Подаване на BINARY низът също влияе на чувствителността на главните и малки букви. С BINARY низове, символът с главни букви е различен от неговия аналог с малки букви:

Пример:

SELECT 
    REGEXP_SUBSTR('My Cats', 'c.t') AS "Character",
    REGEXP_SUBSTR(BINARY 'My Cats', 'c.t') AS "Binary"; 

Резултат:

+-----------+-------+| Характер | Двоичен |+-----------+-------+| Котка | |+----------+-------+

Ето какво се случва, ако променим регистъра:

SELECT 
    REGEXP_SUBSTR('My Cats', 'C.t') AS "Character",
    REGEXP_SUBSTR(BINARY 'My Cats', 'C.t') AS "Binary"; 

Резултат:

+-----------+-------+| Характер | Двоичен |+-----------+-------+| Котка | Котка |+----------+-------+

Нулеви аргументи

Предаването на null тъй като всеки аргумент води до null :

SELECT 
    REGEXP_SUBSTR(null, 'c.t') AS "1",
    REGEXP_SUBSTR('Cat', null) AS "2",
    REGEXP_SUBSTR(null, null) AS "3"; 

Резултат:

+------+------+------+| 1 | 2 | 3 |+------+------+------+| NULL | NULL | NULL |+------+------+------+

Грешен брой аргументи

Предаването на грешен брой аргументи или липсата на аргументи води до грешка:

SELECT REGEXP_SUBSTR('Cat'); 

Резултат:

ГРЕШКА 1582 (42000):Неправилен брой параметри в извикването на естествена функция „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. Как работи DEGREES() в MariaDB

  2. Как да направите вашата MySQL или MariaDB база данни високодостъпна в AWS и Google Cloud

  3. Как да разположите MariaDB клъстер за висока наличност

  4. Как работи UNHEX() в MariaDB

  5. Обявяване на ClusterControl 1.7.3:Подобрена поддръжка на PostgreSQL и нови опции за внедряване в облак