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.