sql >> Database >  >> RDS >> Mysql

Hoe de REGEXP_LIKE()-functie werkt in MySQL

In MySQL is de REGEXP_LIKE() functie wordt gebruikt om te bepalen of een tekenreeks al dan niet overeenkomt met een reguliere expressie.

De functie retourneert 1 als de tekenreeks overeenkomt met de opgegeven reguliere expressie, en 0 als dat niet het geval is.

Syntaxis

De syntaxis gaat als volgt:

REGEXP_LIKE(expr, pat[, match_type])

Waar expr is de invoerreeks en pat is de reguliere expressie waarvoor u de string test.

Het optionele match_type argument kunt u de reguliere expressie verfijnen. U kunt bijvoorbeeld match_type . gebruiken om hoofdlettergevoelige overeenkomsten op te geven of niet.

Voorbeeld 1 – Basisgebruik

Hier is een eenvoudig voorbeeld:

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

Resultaat:

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

In dit geval specificeert onze reguliere expressie elk teken in elke reeks, dus we krijgen natuurlijk een overeenkomst. De functie retourneert 1 om een ​​overeenkomst aan te geven.

Voorbeeld 2 – Geen overeenkomst

Hier is een voorbeeld waarbij de invoerreeks niet overeenkomt met de reguliere expressie:

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

Resultaat:

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

In dit geval specificeert onze reguliere expressie dat er een of meer b . moeten zijn tekens in een willekeurige volgorde. Onze invoerreeks bevat dit teken niet en dus 0 wordt geretourneerd.

Voorbeeld 3 – Match het begin van een string

Hier is een voorbeeld waarbij de reguliere expressie aangeeft dat de string met bepaalde tekens moet beginnen:

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

Resultaat:

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

En dit is wat er gebeurt als er geen match is:

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

Resultaat:

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

Voorbeeld 4 – Een databasequery

Deze functie kan worden gebruikt in de WHERE clausule van databasequery's om alleen die rijen te retourneren die het patroon bevatten:

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

Resultaat:

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

Hier is de volledige tabel:

SELECT AlbumId, AlbumName
FROM Albums;

Resultaat:

+---------+--------------------------+
| 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  |
+---------+--------------------------+

Voorbeeld 5 – Het match_type Argument

U kunt een extra argument opgeven om het zoektype te bepalen. Hiermee kunt u dingen specificeren zoals of de overeenkomst hoofdlettergevoelig is, of u lijnafsluitingen wilt opnemen, enz.

Hier is een voorbeeld van het specificeren van een hoofdlettergevoelige overeenkomst en een hoofdletterongevoelige overeenkomst:

SELECT 
  REGEXP_LIKE('Cat', '^ca', 'c') 'Case-Sensitive',
  REGEXP_LIKE('Cat', '^ca', 'i') 'Case-Insensitive';

Resultaat:

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

Het match_type argument kan de volgende tekens bevatten:

c
Hoofdlettergevoelige overeenkomst.
i
Hoofdletterongevoelige overeenkomst.
m
Modus met meerdere regels. Herken lijnafsluitingen binnen de string. Het standaardgedrag is om regelafsluitingen alleen aan het begin en einde van de tekenreeksuitdrukking te laten overeenkomen.
n
De . karakter komt overeen met regelafsluitingen. De standaard is voor . overeenkomend om te stoppen aan het einde van een regel.
u
Alleen Unix regeleindes. Alleen het teken van de nieuwe regel wordt herkend als een regel die eindigt met de . , ^ , en $ match operators.

Meer voorbeelden

U kunt meer voorbeelden van standaard reguliere expressies zien op MySQL REGEXP-voorbeelden. REGEXP is een synoniem voor REGEXP_LIKE() , zodat u de voorbeelden door elkaar kunt gebruiken.

Zie ook de syntaxis van reguliere expressies in de MySQL-documentatie.


  1. Tips voor het opslaan van uw MariaDB-back-ups in de cloud

  2. Time-outinstelling voor SQL Server

  3. Programmatisch opgeslagen SQL Server-procedurebron ophalen die identiek is aan de bron die wordt geretourneerd door de SQL Server Management Studio-gui?

  4. Snel script dat alle eigenschappen van SERVERPROPERTY() retourneert in SQL Server 2017/2019