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. Med BINARY 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 i null :
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'