V MariaDB, REGEXP_SUBSTR()
funkce vrací podřetězec, který odpovídá danému vzoru regulárního výrazu.
Pokud neexistuje žádná shoda (tj. vstupní řetězec neobsahuje podřetězec), výsledkem je prázdný řetězec.
Syntaxe
Syntaxe vypadá takto:
REGEXP_SUBSTR(subject,pattern)
Kde subject
je vstupní řetězec a pattern
je vzor regulárního výrazu pro podřetězec.
Všimněte si, že v době psaní tohoto článku byla MariaDB verze REGEXP_SUBSTR()
přijímá méně argumentů než REGEXP_SUBSTR()
MySQL . Verze MySQL vám umožňuje poskytnout argumenty pro počáteční pozici vyhledávání, který výskyt hledat, a také způsob, jak zpřesnit regulární výraz.
Příklad
Zde je základní příklad:
SELECT REGEXP_SUBSTR('Thailand and Laos', 'l.nd');
Výsledek:
+--------------------------------------------+| REGEXP_SUBSTR('Thajsko a Laos', 'l.nd') |+---------------------------------- ----------+| pozemek |+--------------------------------------------+V tomto případě došlo ke shodě a podřetězec je vrácen.
Více shod
Ve výchozím nastavení, pokud je v řetězci více shod, je vrácena první:
SELECT REGEXP_SUBSTR('Lend for land', 'l.nd');
Výsledek:
+----------------------------------------+| REGEXP_SUBSTR('Půjčka na pozemek', 'l.nd') |+---------------------------------- ------+| Půjčit |+----------------------------------------+Žádná shoda
Zde je příklad, kdy neexistuje žádná shoda:
SELECT REGEXP_SUBSTR('Lend for land', '^C');
Výsledek:
+--------------------------------------+| REGEXP_SUBSTR('Půjčka na pozemek', '^C') |+----------------------------------- ---+| |+--------------------------------------+Neexistuje žádná shoda, takže výsledkem je prázdný řetězec.
Rozlišovat malá a velká písmena
REGEXP_SUBSTR()
funkce se řídí pravidly rozlišování malých a velkých písmen efektivního řazení. Párování se provádí bez rozlišení malých a velkých písmen u porovnávání bez rozlišení malých a velkých písmen a u porovnávání rozlišujících malá a velká písmena a u binárních dat.Zde je příklad:
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";
Výsledek:
+------------+------------------+-------------- --+| Moje výchozí | Nerozlišují se malá a velká písmena | Rozlišují se malá a velká písmena |+------------+------------------+-------------- --+| Kočka | Kočka | |+------------+------------------+---------------- +Moje výchozí řazení nerozlišuje malá a velká písmena. Zbývající dva řetězce byly nuceny používat řazení bez rozlišení malých a velkých písmen, respektive řazení rozlišující malá a velká písmena.
Poskytování
BINARY
řetězec také rozlišuje velká a malá písmena (viz níže).Binární řetězce
Předávání
BINARY
řetězec také ovlivňuje citlivost. SBINARY
řetězce, velký znak se liší od malého protějšku:Příklad:
SELECT REGEXP_SUBSTR('My Cats', 'c.t') AS "Character", REGEXP_SUBSTR(BINARY 'My Cats', 'c.t') AS "Binary";
Výsledek:
+-----------+--------+| Postava | Binární |+-----------+--------+| Kočka | |+-----------+--------+Pokud změníme velikost písmen, stane se toto:
SELECT REGEXP_SUBSTR('My Cats', 'C.t') AS "Character", REGEXP_SUBSTR(BINARY 'My Cats', 'C.t') AS "Binary";
Výsledek:
+-----------+--------+| Postava | Binární |+-----------+--------+| Kočka | Kočka |+-----------+--------+Nulové argumenty
Předávání
null
protože jakýkoli argument má za následeknull
:SELECT REGEXP_SUBSTR(null, 'c.t') AS "1", REGEXP_SUBSTR('Cat', null) AS "2", REGEXP_SUBSTR(null, null) AS "3";
Výsledek:
+------+------+------+| 1 | 2 | 3 |+------+------+------+| NULL | NULL | NULL |+------+------+------+Špatný počet argumentů
Předání nesprávného počtu argumentů nebo žádné argumenty vede k chybě:
SELECT REGEXP_SUBSTR('Cat');
Výsledek:
CHYBA 1582 (42000):Nesprávný počet parametrů ve volání nativní funkce 'REGEXP_SUBSTR'