sql >> Databasteknik >  >> RDS >> MariaDB

Hur REGEXP_SUBSTR() fungerar i MariaDB

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'

  1. Hur OCT() fungerar i MariaDB

  2. 3 sätt att hitta rader som innehåller små bokstäver i SQLite

  3. SQL Server motsvarande Oracles CREATE OR REPLACE VIEW

  4. Benchmarking Managed PostgreSQL Cloud Solutions - Google Cloud:Del tre