sql >> Databáze >  >> RDS >> Mysql

Jak funguje funkce REGEXP_SUBSTR() v MySQL

V MySQL je to REGEXP_SUBSTR() funkce vrací podřetězec, který odpovídá danému vzoru regulárního výrazu.

Pokud neexistuje žádná shoda (tj. vstupní řetězec neobsahuje podřetězec), výsledek je NULL .

Syntaxe

Syntaxe vypadá takto:

REGEXP_SUBSTR(výraz, pat[, pozice[, výskyt[, typ_shody]]])

Kde expr je vstupní řetězec a pat je vzor regulárního výrazu pro podřetězec.

Volitelný pos argument umožňuje zadat pozici v řetězci pro zahájení vyhledávání. Pokud je vynechán, začíná na pozici 1.

Volitelný occurrence argument umožňuje určit, který výskyt shody se má hledat. Pokud je vynechán, použije se první výskyt (výskyt 1).

Volitelný match_type argument umožňuje upřesnit regulární výraz. Tento argument můžete například použít k určení shody rozlišující malá a velká písmena.

Příklad 1 – Základní použití

Zde je základní příklad:

SELECT REGEXP_SUBSTR('Thajsko nebo Kambodža', 'l.nd') Výsledek;

Výsledek:

+---------+| Výsledek |+--------+| pozemek |+--------+

V tomto případě došlo ke shodě a podřetězec je vrácen.

Příklad 2 – Více shod

Ve výchozím nastavení, pokud je v řetězci více shod, je vrácena první (ačkoli v případě potřeby můžete zadat jiný výskyt. Brzy se k tomu dostaneme):

SELECT REGEXP_SUBSTR('Lend for land', 'l.nd') Výsledek;

Výsledek:

+---------+| Výsledek |+--------+| Půjčit |+--------+

Příklad 3 – Žádná shoda

Zde je příklad, kdy neexistuje žádná shoda:

SELECT REGEXP_SUBSTR('Půjčka na pozemek', '^C') Výsledek;

Výsledek:

+---------+| Výsledek |+--------+| NULL |+--------+

Neexistuje žádná shoda, takže výsledek je NULL .

Příklad 4 – pos Argument

Zde je příklad zadání počáteční pozice:

SELECT REGEXP_SUBSTR('Cat Cut Cot', 'C.t', 2) Výsledek;

Výsledek:

+---------+| Výsledek |+--------+| Vyjmout |+--------+

Začali jsme na pozici 2, která následuje po začátku prvního výskytu, takže místo toho je vrácen další výskyt.

Zde je další příklad:

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

Výsledek:

+-------+-------+-------+| Pozice 1 | Pozice 2 | Poz. 6 |+-------+-------+-------+| Kočka | Řez | Dětská postýlka |+-------+-------+-------+

Příklad 5 – occurrence Argument

Zde je příklad použití occurrence argument. Ve všech případech začínáme na pozici 1:

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

Výsledek:

+--------------+--------------+--------------+| Výskyt 1 | Výskyt 2 | Výskyt 3 |+--------------+--------------+--------------+| Kočka | Řez | Dětská postýlka |+--------------+--------------+--------------+ 

Pokud však začneme na jiné pozici, výsledek je jiný:

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

Výsledek:

+--------------+--------------+--------------+| Výskyt 1 | Výskyt 2 | Výskyt 3 |+--------------+--------------+--------------+| Střih | Dětská postýlka | NULL |+--------------+--------------+--------------+ 

Stalo se to proto, že naše výchozí pozice přišla poté, co začala první událost. Proto se výskyt 2 stal výskytem 1 a výskyt 3 se stal výskytem 2. A protože již nebyly žádné další výskyty, výsledek výskytu 3 byl NULL (tj. nebyl zde žádný výskyt 3).

Příklad 6 – match_type Argument

Pro určení typu shody můžete zadat další argument. To vám umožňuje určit věci, jako je, zda se ve shodě rozlišují malá a velká písmena, zda mají či nemají obsahovat zakončovací znaky atd.

Zde je příklad zadání shody rozlišující malá a velká písmena a nerozlišující malá a velká písmena:

SELECT REGEXP_SUBSTR('Cat Cut Cot', 'c.t', 1, 1, 'c') 'Rozlišovat malá a velká písmena', REGEXP_SUBSTR('Cat Cut Cot', 'c.t', 1, 1, 'i') 'Nerozlišují se malá a velká písmena';

Výsledek:

+----------------+------------------+| Rozlišovat malá a velká písmena | Nerozlišují se malá a velká písmena |+----------------+------------------+| NULL | Kočka |+----------------+------------------+

match_type argument může obsahovat následující znaky:

c
Rozlišování velkých a malých písmen.
i
Shoda nerozlišující malá a velká písmena.
m
Režim více řádků. Rozpoznejte zakončení řádku v řetězci. Výchozí chování je přiřazovat zakončení řádků pouze na začátek a konec řetězcového výrazu.
n
The . znak se shoduje se zakončením řádku. Výchozí hodnota je . párování se zastaví na konci řádku.
u
Koncovky řádků pouze pro Unix. Pouze znak nového řádku je rozpoznán jako řádek končící znakem . , ^ a $ operátory shody.

  1. Vytváření plánů údržby databáze

  2. datetime vs datetime2 v SQL Server:Jaký je rozdíl?

  3. Co je schéma v SQL Server a jak vytvořit/zrušit schéma v SQL Server databázi - SQL Server / TSQL výukový program, část 27

  4. Jak exportovat výsledek dotazu do .csv nebo souboru odděleného tabulátory v SQL Server Management Studio (SSMS) - SQL Server / Výukový program TSQL, část 23