sql >> Database teknologi >  >> RDS >> MariaDB

Hvordan REGEXP_SUBSTR() virker i MariaDB

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

Hvis der ikke er nogen match (dvs. inputstrengen indeholder ikke understrengen), er resultatet en tom streng.

Syntaks

Syntaksen ser sådan ud:

REGEXP_SUBSTR(emne,mønster) 

Hvor emne er inputstrengen og mønsteret er det regulære udtryksmønster for understrengen.

Bemærk, at i skrivende stund MariaDBs version af REGEXP_SUBSTR() accepterer færre argumenter end MySQL's REGEXP_SUBSTR() . MySQLs version giver dig mulighed for at give argumenter for søgningens startposition, hvilken forekomst du skal søge efter, samt en måde at forfine det regulære udtryk på.

Eksempel

Her er et grundlæggende eksempel:

SELECT REGEXP_SUBSTR('Thailand og Laos', 'l.nd'); 

Resultat:

+----------------------------------------------------+| REGEXP_SUBSTR('Thailand og Laos', 'l.nd') |+---------------------------------------- ----------+| land |+----------------------------------------------------+ 

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

Flere match

Som standard, hvis der er flere matches i strengen, returneres den første:

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

Resultat:

+----------------------------------------+| REGEXP_SUBSTR('Lån til land', 'l.nd') |+---------------------------------------- ------+| Lån |+----------------------------------------+

Ingen match

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

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

Resultat:

+---------------------------------------------+| REGEXP_SUBSTR('Lån til land', '^C') |+---------------------------------------- ---+| |+----------------------------------------------+

Der er ingen match, så resultatet er en tom streng.

Skrivar og bogstaver

REGEXP_SUBSTR() funktionen følger reglerne for store og små bogstaver for den effektive sortering. Matching udføres ufølsomt for store og små bogstaver for versal-ufølsomme sorteringer og store og små bogstaver for store og små bogstaver for store og små bogstaver for store og små bogstaver og for binære data.

Her er et eksempel:

VÆLG REGEXP_SUBSTR('Mine katte', 'c.t') SOM "Min standard", REGEXP_SUBSTR(_latin7'Mine katte' COLLATE latin7_general_ci, 'c.t') SOM "Uændret store og små bogstaver", REGEXP_SUBSTR( _latin7'My Cats' COLLATE latin7_general_cs, 'c.t') SOM "Case Sensitive"; 

Resultat:

+------------+------------------------+------------------- --+| Min standard | Ufølsom mellem store og små bogstaver | Forhold mellem store og små bogstaver |+-------------+------------------------+-------------- --+| Kat | Kat | |+------------+-------------------+---------------- +

Min standardsortering er ufølsom mellem store og små bogstaver. De to andre strenge blev tvunget til henholdsvis en versal-ufølsom sortering og store og små bogstaver.

Angivelse af en BINÆR streng skelner også mellem store og små bogstaver (se nedenfor).

Binære strenge

Sender en BINÆR streng påvirker også følsomheden for store og små bogstaver. Med BINÆR strenge, er et stort bogstav anderledes end dets modstykke med små bogstaver:

Eksempel:

VÆLG REGEXP_SUBSTR('Mine katte', 'c.t') SOM "Karakter", REGEXP_SUBSTR(BINARY 'Mine katte', 'c.t') SOM "Binær"; 

Resultat:

+------------+--------+| Karakter | Binær |+------------+--------+| Kat | |+-----------+--------+

Her er, hvad der sker, hvis vi ændrer sagen:

VÆLG REGEXP_SUBSTR('Mine katte', 'C.t') SOM "Karakter", REGEXP_SUBSTR(BINARY 'Mine katte', 'C.t') SOM "Binær"; 

Resultat:

+------------+--------+| Karakter | Binær |+------------+--------+| Kat | Kat |+-----------+--------+

Nul-argumenter

Sender null da ethvert argument resulterer i null :

VÆLG 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 |+------+------+------+

Forkert antal argumenter

Sender det forkerte antal argumenter eller ingen argumenter, resulterer det i en fejl:

VÆLG REGEXP_SUBSTR('Kat'); 

Resultat:

FEJL 1582 (42000):Forkert parameterantal i kaldet til den oprindelige funktion 'REGEXP_SUBSTR'

  1. Støb ind til varchar

  2. Brug af alarmer og operatører i SQL Server

  3. Hvordan gør man en kolonne unik i SQL?

  4. Forstå gruppe efter klausul i SQL Server - SQL Server / TSQL selvstudium del 130