sql >> Database teknologi >  >> RDS >> Mysql

Sådan fungerer REGEXP_SUBSTR()-funktionen i MySQL

I MySQL er REGEXP_SUBSTR() funktion returnerer den understreng, der matcher det givne regulære udtryksmønster.

Hvis der ikke er noget match (dvs. inputstrengen indeholder ikke understrengen), er resultatet NULL .

Syntaks

Syntaksen ser sådan ud:

REGEXP_SUBSTR(udt., pat[, pos[, forekomst[, match_type]]])

Hvor expr er inputstrengen og pat er det regulære udtryksmønster for understrengen.

Den valgfri pos argument giver dig mulighed for at angive en position i strengen for at starte søgningen. Hvis den udelades, starter den ved position 1.

Den valgfri forekomst argument giver dig mulighed for at angive, hvilken forekomst af matchet du skal søge efter. Hvis den udelades, bruges den første forekomst (forekomst 1).

Den valgfri match_type argument giver dig mulighed for at forfine det regulære udtryk. Du kan f.eks. bruge dette argument til at angive overensstemmelse mellem store og små bogstaver eller ej.

Eksempel 1 – Grundlæggende brug

Her er et grundlæggende eksempel:

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

Resultat:

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

I dette tilfælde er der et match, og understrengen returneres.

Eksempel 2 – Flere kampe

Som standard, hvis der er flere matches i strengen, returneres den første (selvom du kan angive en anden forekomst, hvis det er nødvendigt. Vi kommer snart til det):

SELECT REGEXP_SUBSTR('Lån til land', 'l.nd') Resultat;

Resultat:

+--------+| Resultat |+--------+| Lån |+--------+

Eksempel 3 – Ingen match

Her er et eksempel, hvor der ikke er nogen match:

SELECT REGEXP_SUBSTR('Lån til land', '^C') Resultat;

Resultat:

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

Der er ingen match, så resultatet er NULL .

Eksempel 4 – pos Argument

Her er et eksempel på angivelse af en startposition:

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

Resultat:

+--------+| Resultat |+--------+| Klip |+--------+

Vi startede ved position 2, som kommer efter starten af ​​den første forekomst, så den næste forekomst returneres i stedet.

Her er et andet eksempel:

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 |+-------+-------+-------+| Kat | Klip | Tremmeseng |+-------+-------+-------+

Eksempel 5 – forekomsten Argument

Her er et eksempel på brug af forekomst argument. I alle tilfælde starter vi ved position 1:

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

Resultat:

+--------------+-------------+--------------+| Forekomst 1 | Forekomst 2 | Forekomst 3 |+--------------------+------+| Kat | Klip | Tremmeseng |+--------------+-------------+--------------+ 

Men hvis vi starter ved en anden position, er resultatet anderledes:

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

Resultat:

+--------------+-------------+--------------+| Forekomst 1 | Forekomst 2 | Forekomst 3 |+--------------------+------+| Klip | Tremmeseng | NULL |+--------------+--------------+-------------+ 

Dette skete, fordi vores startposition kom efter den første forekomst var startet. Derfor blev forekomst 2 til forekomst 1, og forekomst 3 blev til forekomst 2. Og fordi der ikke var flere forekomster, var resultatet af forekomst 3 NULL (dvs. der var ingen forekomst 3).

Eksempel 6 – match_type Argument

Du kan angive et ekstra argument for at bestemme matchtypen. Dette giver dig mulighed for at specificere ting som om matchet er skelet mellem store og små bogstaver, om der skal inkluderes linjeafslutninger osv.

Her er et eksempel på at angive et match, der skelner mellem store og små bogstaver, og et match, der skelner mellem store og små bogstaver:

SELECT REGEXP_SUBSTR('Cat Cut Cot', 'c.t', 1, 1, 'c') 'Case-Sensitive', REGEXP_SUBSTR('Cat Cut Cot', 'c.t', 1, 1, 'i') 'Uskift mellem store og små bogstaver';

Resultat:

+----------------+------------------------+| Der skelnes mellem store og små bogstaver | Skifter ikke på store og små bogstaver |+----------------+------------------------+| NULL | Kat |+----------------+------------------------+

match_type argument kan indeholde følgende tegn:

c
Skaftfølsom match.
i
Tilpasning af store og små bogstaver.
m
Flere linjers tilstand. Genkend linjeterminatorer i strengen. Standardadfærden er kun at matche linjeterminatorer i starten og slutningen af ​​strengudtrykket.
n
. karakter matcher linjeterminatorer. Standard er for . matcher for at stoppe ved slutningen af ​​en linje.
u
Unix-kun linjeafslutninger. Kun tegnet for ny linje genkendes som en linje, der slutter med . , ^ og $ match operatører.

  1. MS-Access Class Module og VBA

  2. Hvordan kan jeg importere data fra ASCII (ISO/IEC 8859-1) til min Rails/PGSQL-database?

  3. PostgreSQL opret tabel, hvis den ikke eksisterer

  4. Hvordan tilføjes levenshtein-funktion i mysql?