I MariaDB, REGEXP_SUBSTR()
funktion returnerar delsträngen som matchar det givna reguljära uttrycksmönstret.
Om det inte finns någon matchning (dvs. inmatningssträngen innehåller inte delsträngen), blir resultatet en tom sträng.
Syntax
Syntaxen ser ut så här:
REGEXP_SUBSTR(subject,pattern)
Där subject
är inmatningssträngen och pattern
är det reguljära uttrycksmönstret för delsträngen.
Observera att i skrivande stund MariaDB:s version av REGEXP_SUBSTR()
accepterar färre argument än MySQL:s REGEXP_SUBSTR()
. MySQL:s version låter dig ange argument för sökningens startposition, vilken förekomst du ska söka efter, samt ett sätt att förfina det reguljära uttrycket.
Exempel
Här är ett grundläggande exempel:
SELECT REGEXP_SUBSTR('Thailand and Laos', 'l.nd');
Resultat:
+----------------------------------------------------+| REGEXP_SUBSTR('Thailand och Laos', 'l.nd') |+---------------------------------------- ----------+| land |+----------------------------------------------------+I det här fallet finns det en matchning och delsträngen returneras.
Flera matchningar
Som standard, om det finns flera matchningar inom strängen, returneras den första:
SELECT REGEXP_SUBSTR('Lend for land', 'l.nd');
Resultat:
+----------------------------------------+| REGEXP_SUBSTR('Låna ut för land', 'l.nd') |+---------------------------------------- ------+| Låna ut |+----------------------------------------+Ingen match
Här är ett exempel där det inte finns någon matchning:
SELECT REGEXP_SUBSTR('Lend for land', '^C');
Resultat:
+---------------------------------------------+| REGEXP_SUBSTR('Låna ut för land', '^C') |+---------------------------------------- ---+| |+----------------------------------------------+Det finns ingen matchning, så resultatet är en tom sträng.
Skaftkänslighet
REGEXP_SUBSTR()
funktionen följer reglerna för skiftlägeskänslighet för den effektiva sorteringen. Matchning utförs skiftlägesokänsligt för skiftlägesokänsliga sorteringar och skiftlägeskänsliga för skiftlägeskänsliga sorteringar och för binära data.Här är ett exempel:
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";
Resultat:
+------------+-------------------+------------- --+| Min standard | Skiftlägesokänslig | Skiftlägeskänslig |+------------+------------------------+-------------------- --+| Katt | Katt | |+------------+-------------------+---------------- +Min standardsortering är skiftlägesokänslig. De andra två strängarna tvingades till en skiftlägesokänslig sortering respektive skiftlägeskänslig.
Tillhandahålla en
BINARY
sträng är också skiftlägeskänslig (se nedan).Binära strängar
Skickar en
BINARY
sträng påverkar också skiftlägeskänsligheten. MedBINARY
strängar, skiljer sig ett versaltecken från dess motsvarighet till gemener:Exempel:
SELECT REGEXP_SUBSTR('My Cats', 'c.t') AS "Character", REGEXP_SUBSTR(BINARY 'My Cats', 'c.t') AS "Binary";
Resultat:
+----------------+--------+| Karaktär | Binär |+----------------+--------+| Katt | |+-----------+--------+Så här händer om vi ändrar fallet:
SELECT REGEXP_SUBSTR('My Cats', 'C.t') AS "Character", REGEXP_SUBSTR(BINARY 'My Cats', 'C.t') AS "Binary";
Resultat:
+----------------+--------+| Karaktär | Binär |+----------------+--------+| Katt | Katt |+-----------+--------+Nollargument
Skickar
null
eftersom alla argument resulterar inull
:SELECT 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 |+------+------+------+Fel antal argument
Om du skickar fel antal argument eller inga argument, resulterar det i ett fel:
SELECT REGEXP_SUBSTR('Cat');
Resultat:
ERROR 1582 (42000):Fel parameterräkning i anropet till den ursprungliga funktionen 'REGEXP_SUBSTR'