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

Sådan fungerer REGEXP_LIKE()-funktionen i MySQL

I MySQL er REGEXP_LIKE() funktion bruges til at bestemme, om en streng matcher et regulært udtryk.

Funktionen returnerer 1 hvis strengen matcher det angivne regulære udtryk, og 0 hvis det ikke gør det.

Syntaks

Syntaksen ser sådan ud:

REGEXP_LIKE(expr, pat[, match_type])

Hvor expr er inputstrengen og pat er det regulære udtryk, som du tester strengen for.

Den valgfri match_type argument giver dig mulighed for at forfine det regulære udtryk. For eksempel kan du bruge match_type for at angive forskellen mellem store og små bogstaver eller ej.

Eksempel 1 – Grundlæggende brug

Her er et grundlæggende eksempel:

SELECT REGEXP_LIKE('Cat', '.*') Result;

Resultat:

+--------+
| Result |
+--------+
|      1 |
+--------+

I dette tilfælde angiver vores regulære udtryk et hvilket som helst tegn i en hvilken som helst sekvens, så selvfølgelig får vi et match. Funktionen returnerer 1 for at angive et match.

Eksempel 2 – Ingen match

Her er et eksempel, hvor inputstrengen ikke matcher det regulære udtryk:

SELECT REGEXP_LIKE('Cat', 'b+') Result;

Resultat:

+--------+
| Result |
+--------+
|      0 |
+--------+

I dette tilfælde angiver vores regulære udtryk, at der skal være en eller flere b tegn i enhver rækkefølge. Vores inputstreng indeholder ikke dette tegn og derfor 0 er returneret.

Eksempel 3 – Match begyndelsen af ​​en streng

Her er et eksempel, hvor det regulære udtryk angiver, at strengen skal begynde med bestemte tegn:

SELECT REGEXP_LIKE('Cat', '^Ca') Result;

Resultat:

+--------+
| Result |
+--------+
|      1 |
+--------+

Og her er, hvad der sker, hvis der ikke er nogen match:

SELECT REGEXP_LIKE('Cat', '^Da') Result;

Resultat:

+--------+
| Result |
+--------+
|      0 |
+--------+

Eksempel 4 – En databaseforespørgsel

Denne funktion kan bruges i WHERE klausul af databaseforespørgsler for kun at returnere de rækker, der indeholder mønsteret:

SELECT AlbumId, AlbumName
FROM Albums
WHERE REGEXP_LIKE(AlbumName, '^Power');

Resultat:

+---------+------------+
| AlbumId | AlbumName  |
+---------+------------+
|       1 | Powerslave |
|       2 | Powerage   |
+---------+------------+

Her er den fulde tabel:

SELECT AlbumId, AlbumName
FROM Albums;

Resultat:

+---------+--------------------------+
| AlbumId | AlbumName                |
+---------+--------------------------+
|       1 | Powerslave               |
|       2 | Powerage                 |
|       3 | Singing Down the Lane    |
|       4 | Ziltoid the Omniscient   |
|       5 | Casualties of Cool       |
|       6 | Epicloud                 |
|       7 | Somewhere in Time        |
|       8 | Piece of Mind            |
|       9 | Killers                  |
|      10 | No Prayer for the Dying  |
|      11 | No Sound Without Silence |
|      12 | Big Swing Face           |
|      13 | Blue Night               |
|      14 | Eternity                 |
|      15 | Scandinavia              |
|      16 | Long Lost Suitcase       |
|      17 | Praise and Blame         |
|      18 | Along Came Jones         |
|      19 | All Night Wrong          |
|      20 | The Sixteen Men of Tain  |
+---------+--------------------------+

Eksempel 5 – 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_LIKE('Cat', '^ca', 'c') 'Case-Sensitive',
  REGEXP_LIKE('Cat', '^ca', 'i') 'Case-Insensitive';

Resultat:

+----------------+------------------+
| Case-Sensitive | Case-Insensitive |
+----------------+------------------+
|              0 |                1 |
+----------------+------------------+

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.

Flere eksempler

Du kan se flere eksempler på grundlæggende regulære udtryk på MySQL REGEXP Eksempler. REGEXP er et synonym for REGEXP_LIKE() , så du kan bruge eksemplerne i flæng.

Se også Syntaks for regulært udtryk fra MySQL-dokumentationen.


  1. Hvordan MINUTE() virker i MariaDB

  2. Hvorfor får jeg OutOfRange Exception i GetOrdinal Function i dette CLOB-felt?

  3. Databasedesign til brugerindstillinger

  4. nullvalue:Vis NULL-værdier i SQLite