I MariaDB er REGEXP_SUBSTR()
funktion returnerer den understreng, der matcher det givne regulære udtryksmønster.
Hvis der ikke er nogen match (dvs. inputstrengen indeholder ikke understrengen), er resultatet en tom streng.
Syntaks
Syntaksen ser sådan ud:
REGEXP_SUBSTR(emne,mønster)
Hvor emne
er inputstrengen og mønsteret
er det regulære udtryksmønster for understrengen.
Bemærk, at i skrivende stund MariaDBs version af REGEXP_SUBSTR()
accepterer færre argumenter end MySQL's REGEXP_SUBSTR()
. MySQLs version giver dig mulighed for at give argumenter for søgningens startposition, hvilken forekomst du skal søge efter, samt en måde at forfine det regulære udtryk på.
Eksempel
Her er et grundlæggende eksempel:
SELECT REGEXP_SUBSTR('Thailand og Laos', 'l.nd');
Resultat:
+----------------------------------------------------+| REGEXP_SUBSTR('Thailand og Laos', 'l.nd') |+---------------------------------------- ----------+| land |+----------------------------------------------------+I dette tilfælde er der et match, og understrengen returneres.
Flere match
Som standard, hvis der er flere matches i strengen, returneres den første:
SELECT REGEXP_SUBSTR('Lån til land', 'l.nd');
Resultat:
+----------------------------------------+| REGEXP_SUBSTR('Lån til land', 'l.nd') |+---------------------------------------- ------+| Lån |+----------------------------------------+Ingen match
Her er et eksempel, hvor der ikke er nogen match:
SELECT REGEXP_SUBSTR('Lån til land', '^C');
Resultat:
+---------------------------------------------+| REGEXP_SUBSTR('Lån til land', '^C') |+---------------------------------------- ---+| |+----------------------------------------------+Der er ingen match, så resultatet er en tom streng.
Skrivar og bogstaver
REGEXP_SUBSTR()
funktionen følger reglerne for store og små bogstaver for den effektive sortering. Matching udføres ufølsomt for store og små bogstaver for versal-ufølsomme sorteringer og store og små bogstaver for store og små bogstaver for store og små bogstaver for store og små bogstaver og for binære data.Her er et eksempel:
VÆLG REGEXP_SUBSTR('Mine katte', 'c.t') SOM "Min standard", REGEXP_SUBSTR(_latin7'Mine katte' COLLATE latin7_general_ci, 'c.t') SOM "Uændret store og små bogstaver", REGEXP_SUBSTR( _latin7'My Cats' COLLATE latin7_general_cs, 'c.t') SOM "Case Sensitive";
Resultat:
+------------+------------------------+------------------- --+| Min standard | Ufølsom mellem store og små bogstaver | Forhold mellem store og små bogstaver |+-------------+------------------------+-------------- --+| Kat | Kat | |+------------+-------------------+---------------- +Min standardsortering er ufølsom mellem store og små bogstaver. De to andre strenge blev tvunget til henholdsvis en versal-ufølsom sortering og store og små bogstaver.
Angivelse af en
BINÆR streng skelner også mellem store og små bogstaver (se nedenfor).
Binære strenge
Sender en
BINÆR
streng påvirker også følsomheden for store og små bogstaver. MedBINÆR
strenge, er et stort bogstav anderledes end dets modstykke med små bogstaver:Eksempel:
VÆLG REGEXP_SUBSTR('Mine katte', 'c.t') SOM "Karakter", REGEXP_SUBSTR(BINARY 'Mine katte', 'c.t') SOM "Binær";
Resultat:
+------------+--------+| Karakter | Binær |+------------+--------+| Kat | |+-----------+--------+Her er, hvad der sker, hvis vi ændrer sagen:
VÆLG REGEXP_SUBSTR('Mine katte', 'C.t') SOM "Karakter", REGEXP_SUBSTR(BINARY 'Mine katte', 'C.t') SOM "Binær";
Resultat:
+------------+--------+| Karakter | Binær |+------------+--------+| Kat | Kat |+-----------+--------+Nul-argumenter
Sender
null
da ethvert argument resulterer inull
:VÆLG REGEXP_SUBSTR(null, 'c.t') AS "1", REGEXP_SUBSTR('Cat', null) AS "2", REGEXP_SUBSTR(null, null) AS "3";
Resultat:
+------+------+------+| 1 | 2 | 3 |+------+------+------+| NULL | NULL | NULL |+------+------+------+Forkert antal argumenter
Sender det forkerte antal argumenter eller ingen argumenter, resulterer det i en fejl:
VÆLG REGEXP_SUBSTR('Kat');
Resultat:
FEJL 1582 (42000):Forkert parameterantal i kaldet til den oprindelige funktion 'REGEXP_SUBSTR'