In MySQL der REGEXP_LIKE()
Funktion wird verwendet, um festzustellen, ob ein String mit einem regulären Ausdruck übereinstimmt.
Die Funktion gibt 1
zurück wenn die Zeichenfolge mit dem bereitgestellten regulären Ausdruck übereinstimmt, und 0
wenn nicht.
Syntax
Die Syntax lautet wie folgt:
REGEXP_LIKE(expr, pat[, match_type])
Wobei expr
ist die Eingabezeichenfolge und pat
ist der reguläre Ausdruck, für den Sie die Zeichenfolge testen.
Der optionale match_type
Argument ermöglicht es Ihnen, den regulären Ausdruck zu verfeinern. Sie können beispielsweise match_type
verwenden Groß-/Kleinschreibung angeben oder nicht.
Beispiel 1 – Grundlegende Verwendung
Hier ist ein einfaches Beispiel:
SELECT REGEXP_LIKE('Cat', '.*') Result;
Ergebnis:
+--------+ | Result | +--------+ | 1 | +--------+
In diesem Fall gibt unser regulärer Ausdruck ein beliebiges Zeichen in einer beliebigen Sequenz an, sodass wir natürlich eine Übereinstimmung erhalten. Die Funktion gibt 1
zurück um eine Übereinstimmung anzuzeigen.
Beispiel 2 – Keine Übereinstimmung
Hier ist ein Beispiel, bei dem die Eingabezeichenfolge nicht mit dem regulären Ausdruck übereinstimmt:
SELECT REGEXP_LIKE('Cat', 'b+') Result;
Ergebnis:
+--------+ | Result | +--------+ | 0 | +--------+
In diesem Fall gibt unser regulärer Ausdruck an, dass es einen oder mehrere b
geben sollte Zeichen in beliebiger Reihenfolge. Unser Eingabestring enthält dieses Zeichen nicht und daher 0
zurückgegeben wird.
Beispiel 3 – Übereinstimmung mit dem Anfang einer Zeichenfolge
Hier ist ein Beispiel, bei dem der reguläre Ausdruck angibt, dass die Zeichenfolge mit bestimmten Zeichen beginnen muss:
SELECT REGEXP_LIKE('Cat', '^Ca') Result;
Ergebnis:
+--------+ | Result | +--------+ | 1 | +--------+
Und Folgendes passiert, wenn es keine Übereinstimmung gibt:
SELECT REGEXP_LIKE('Cat', '^Da') Result;
Ergebnis:
+--------+ | Result | +--------+ | 0 | +--------+
Beispiel 4 – Eine Datenbankabfrage
Diese Funktion kann im WHERE
verwendet werden -Klausel von Datenbankabfragen, um nur die Zeilen zurückzugeben, die das Muster enthalten:
SELECT AlbumId, AlbumName FROM Albums WHERE REGEXP_LIKE(AlbumName, '^Power');
Ergebnis:
+---------+------------+ | AlbumId | AlbumName | +---------+------------+ | 1 | Powerslave | | 2 | Powerage | +---------+------------+
Hier ist die vollständige Tabelle:
SELECT AlbumId, AlbumName FROM Albums;
Ergebnis:
+---------+--------------------------+ | 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 | +---------+--------------------------+
Beispiel 5 – Der match_type
Argument
Sie können ein zusätzliches Argument angeben, um den Übereinstimmungstyp zu bestimmen. Auf diese Weise können Sie beispielsweise angeben, ob bei der Übereinstimmung zwischen Groß- und Kleinschreibung unterschieden wird, ob Zeilenabschlüsse eingefügt werden sollen usw.
Hier ist ein Beispiel für die Angabe einer Übereinstimmung mit Berücksichtigung der Groß- und Kleinschreibung und einer Übereinstimmung ohne Berücksichtigung der Groß-/Kleinschreibung:
SELECT REGEXP_LIKE('Cat', '^ca', 'c') 'Case-Sensitive', REGEXP_LIKE('Cat', '^ca', 'i') 'Case-Insensitive';
Ergebnis:
+----------------+------------------+ | Case-Sensitive | Case-Insensitive | +----------------+------------------+ | 0 | 1 | +----------------+------------------+
Der match_type
Das Argument kann die folgenden Zeichen enthalten:
c
- Groß-/Kleinschreibung beachten.
i
- Übereinstimmung ohne Berücksichtigung der Groß-/Kleinschreibung.
m
- Mehrzeiliger Modus. Zeilenabschlusszeichen innerhalb der Zeichenfolge erkennen. Das Standardverhalten besteht darin, Zeilenabschlusszeichen nur am Anfang und am Ende des Zeichenfolgenausdrucks abzugleichen.
n
- Der
.
Zeichen stimmt mit Zeilenabschlusszeichen überein. Der Standardwert ist.
Anpassung, um am Ende einer Zeile zu stoppen. u
- Nur Unix-Zeilenenden. Nur das Newline-Zeichen wird durch den
.
als Zeilenende erkannt ,^
, und$
Übereinstimmungsoperatoren.
Weitere Beispiele
Weitere Beispiele für grundlegende reguläre Ausdrücke finden Sie unter MySQL REGEXP-Beispiele. REGEXP
ist ein Synonym für REGEXP_LIKE()
, sodass Sie die Beispiele austauschbar verwenden können.
Siehe auch Reguläre Ausdruckssyntax in der MySQL-Dokumentation.