sql >> Databasteknik >  >> RDS >> Mysql

Hur REGEXP_SUBSTR()-funktionen fungerar i MySQL

I MySQL, 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) är resultatet NULL .

Syntax

Syntaxen ser ut så här:

REGEXP_SUBSTR(expr, pat[, pos[, förekomst[, matchningstyp]]])

Där expr är inmatningssträngen och pat är det reguljära uttrycksmönstret för delsträngen.

Den valfria pos argument låter dig ange en position inom strängen för att starta sökningen. Om den utelämnas börjar den vid position 1.

Den valfria förekomsten argument låter dig ange vilken förekomst av matchningen du ska söka efter. Om den utelämnas används den första förekomsten (förekomst 1).

Den valfria match_type argument låter dig förfina det reguljära uttrycket. Du kan till exempel använda detta argument för att ange skiftlägeskänslig matchning eller inte.

Exempel 1 – Grundläggande användning

Här är ett grundläggande exempel:

SELECT REGEXP_SUBSTR('Thailand eller Kambodja', 'l.nd') Resultat;

Resultat:

+--------+| Resultat |+--------+| land |+--------+

I det här fallet finns det en matchning och delsträngen returneras.

Exempel 2 – Flera matchningar

Som standard, om det finns flera matchningar inom strängen, returneras den första (även om du kan ange en annan förekomst om det behövs. Vi kommer till det snart):

SELECT REGEXP_SUBSTR('Låna ut för land', 'l.nd') Resultat;

Resultat:

+--------+| Resultat |+--------+| Låna ut |+--------+

Exempel 3 – Ingen matchning

Här är ett exempel där det inte finns någon matchning:

SELECT REGEXP_SUBSTR('Låna ut för land', '^C') Resultat;

Resultat:

+--------+| Resultat |+--------+| NULL |+--------+

Det finns ingen matchning, så resultatet är NULL .

Exempel 4 – pos Argument

Här är ett exempel på hur du anger en startposition:

SELECT REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 2) Resultat;

Resultat:

+--------+| Resultat |+--------+| Klipp |+--------+

Vi började på position 2, som kommer efter början av den första förekomsten, så nästa förekomst returneras istället.

Här är ett annat exempel:

SELECT REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 1) 'Pos 1', REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 2) 'Pos 2', REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 6) 'Pos 6';

Resultat:

+-------+-------+-------+| Pos 1 | Pos 2 | Pos 6 |+-------+-------+-------+| Katt | Klipp | Spjälsäng |+-------+-------+-------+

Exempel 5 – förekomsten Argument

Här är ett exempel på hur du använder förekomst argument. I alla fall börjar vi på position 1:

SELECT REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 1, 1) 'Förekomst 1', REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 1, 2) 'Förekomst 2', REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 1, 3) 'Förekomst 3';

Resultat:

+--------------+-------------+--------------+| Förekomst 1 | Förekomst 2 | Förekomst 3 |+---------------+----------+-------+| Katt | Klipp | Spjälsäng |+--------------+-------------+--------------+ 

Men om vi börjar på en annan position blir resultatet ett annat:

SELECT REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 2, 1) 'Förekomst 1', REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 2, 2) 'Förekomst 2', REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 2, 3) 'Förekomst 3';

Resultat:

+--------------+-------------+--------------+| Förekomst 1 | Förekomst 2 | Förekomst 3 |+---------------+----------+-------+| Klipp | Spjälsäng | NULL |+--------------+--------------+--------------+ 

Detta hände för att vårt startläge kom efter att den första händelsen hade startat. Därför blev förekomst 2 förekomst 1 och förekomst 3 blev förekomst 2. Och eftersom det inte fanns fler förekomster blev resultatet av förekomst 3 NULL (dvs. det fanns ingen förekomst 3).

Exempel 6 – match_type Argument

Du kan ange ytterligare ett argument för att bestämma matchningstypen. Detta låter dig specificera saker som om matchningen är skiftlägeskänslig eller inte, om linjeavslutare ska inkluderas eller inte, etc.

Här är ett exempel på hur du anger en skiftlägeskänslig matchning och en skiftlägesokänslig matchning:

SELECT REGEXP_SUBSTR('Cat Cut Cot', 'c.t', 1, 1, 'c') 'Case-Sensitive', REGEXP_SUBSTR('Cat Cut Cot', 'c.t', 1, 1, 'i') 'Inte skiftlägeskänslig';

Resultat:

+----------------+------------------------+| Skiftlägeskänslig | Skiftlägeskänslig |+----------------+------------------------+| NULL | Katt |+----------------+------------------------+

match_type argument kan innehålla följande tecken:

c
Skaftkänslig matchning.
i
Verkskiftsokänslig matchning.
m
Flerradsläge. Känn igen linjeavslutare i strängen. Standardbeteendet är att matcha linjeavslutare endast i början och slutet av stränguttrycket.
n
. tecken matchar radavslutare. Standard är för . matchar för att stanna i slutet av en rad.
u
Enbart Unix-radändelser. Endast nyradstecknet känns igen som en rad som slutar med . , ^ och $ matcha operatorer.

  1. Kod för att validera SQL-skript

  2. Förhindrar SQL-injektion i Node.js

  3. Vad betyder PÅ [PRIMÄR]?

  4. Första offentliga förhandsvisning av SQL Server 2019:CTP 2.0