MySQL - Reguläre Ausdrücke
Hallo, angehende Datenbankenthusiasten! Heute tauchen wir in die faszinierende Welt der MySQL-Regulären Ausdrücke ein. Machen Sie sich keine Sorgen, wenn Sie noch nie kodiert haben - wir beginnen bei den Grundlagen und arbeiten uns nach oben. Am Ende dieses Tutorials werden Sie reguläre Ausdrücke wie ein Profi einsetzen können!
Was sind Reguläre Ausdrücke?
Bevor wir uns den spezifischen MySQL-Details zuwenden, lassen Sie uns verstehen, was reguläre Ausdrücke (regex) sind. Stellen Sie sich vor, Sie versuchen, ein bestimmtes Muster in einem Heuhaufen von Text zu finden. Genau hier kommt regex ins Spiel! Es ist wie ein superstarkes Suchwerkzeug, das komplexe Muster in Zeichenketten finden kann.
MySQL-Reguläre Ausdrücke
In MySQL verwenden wir den Operator REGEXP
, um mit regulären Ausdrücken zu arbeiten. Er ist ähnlich wie der LIKE
-Operator, aber viel leistungsfähiger.
Grundlegende Syntax
Hier ist die grundlegende Syntax:
SELECT column_name(s)
FROM table_name
WHERE column_name REGEXP 'pattern';
Schauen wir uns einige Beispiele an:
SELECT * FROM employees WHERE last_name REGEXP 'son';
Diese Abfrage findet alle Mitarbeiter, deren Nachnamen 'son' enthalten, wie Johnson, Wilson oder Sonny.
Groß- und Kleinschreibung
Standardmäßig ist MySQL-Regex nicht groß- und kleinschreibempfindlich. Wenn Sie eine groß- und kleinschreibempfindliche Übereinstimmung wünschen, verwenden Sie das Schlüsselwort BINARY
:
SELECT * FROM employees WHERE last_name REGEXP BINARY 'Smith';
Dies wird 'Smith' matchen, aber nicht 'smith' oder 'SMITH'.
Patterns used with REGEXP
Nun lassen Sie uns einige häufig verwendete Muster mit REGEXP erkunden. Ich mag es, diese als "Geheimcode" von regex zu betrachten - wenn Sie diese kennen, können Sie fast alles finden!
^ (Caret) - Anfang der Zeichenkette
Das Akzentzeichen passt Muster am Anfang einer Zeichenkette an.
SELECT * FROM products WHERE product_name REGEXP '^Apple';
Dies findet alle Produkte, deren Namen mit 'Apple' beginnen, wie 'Apple iPhone' oder 'Apple MacBook'.
$ (Dollar) - Ende der Zeichenkette
Das Dollarzeichen passt Muster am Ende einer Zeichenkette an.
SELECT * FROM products WHERE product_name REGEXP 'Pro$';
Dies findet Produkte, die mit 'Pro' enden, wie 'MacBook Pro' oder 'iPad Pro'.
. (Punkt) - Jedes einzelne Zeichen
Der Punkt passt jedes einzelne Zeichen an, außer dem Zeilenumbruch.
SELECT * FROM words WHERE word REGEXP 'c.t';
Dies passt Wörter wie 'cat', 'cut' oder sogar 'c@t' an!
* (Stern) - Null oder mehr Vorkommen
Der Stern passt null oder mehr Vorkommen des vorherigen Zeichens an.
SELECT * FROM emails WHERE email REGEXP 'info.*@example.com';
Dies passt E-Mails wie '[email protected]', '[email protected]' oder sogar '[email protected]' an.
+ (Plus) - Ein oder mehr Vorkommen
Ähnlich wie *, aber erfordert mindestens ein Vorkommen.
SELECT * FROM products WHERE product_name REGEXP 'iPad ?Pro+';
Dies passt 'iPad Pro', 'iPad Pro', 'iPad Pro' usw. an.
? (Fragezeichen) - Null oder ein Vorkommen
Das Fragezeichen macht das vorherige Zeichen optional.
SELECT * FROM words WHERE word REGEXP 'colou?r';
Dies passt sowohl 'color' als auch 'colour' an.
[] (eckige Klammern) - Zeichensatz
Eckige Klammern definieren einen Zeichensatz zum Anpassen.
SELECT * FROM employees WHERE last_name REGEXP '[AEIOU]';
Dies findet Nachnamen, die einen Vokal enthalten.
[^] (Negierter Zeichensatz)
Durch Hinzufügen eines Akzents innen in eckige Klammern wird der Satz negiert.
SELECT * FROM products WHERE product_name REGEXP '[^0-9]';
Dies findet Produkt names, die keine Ziffern enthalten.
| (Pipe) - Alternation
Das Pipesymbol fungiert wie ein ODER-Operator.
SELECT * FROM animals WHERE species REGEXP 'cat|dog';
Dies findet alle Katzen und Hunde in unserer Tier-Tabelle.
Reguläre Ausdrucksfunktionen und Operatoren
MySQL bietet mehrere Funktionen und Operatoren für die Arbeit mit regulären Ausdrücken. Lassen Sie uns diese erkunden:
Funktion/Operator | Beschreibung |
---|---|
REGEXP | Passt eine Zeichenkette gegen einen regulären Ausdruck an |
REGEXP_LIKE() | Gibt 1 zurück, wenn die Zeichenkette dem Regex-Muster entspricht, sonst 0 |
REGEXP_INSTR() | Gibt die Startposition der ersten Regex-Übereinstimmung zurück |
REGEXP_REPLACE() | Ersetzt Substrings, die einem Regex-Muster entsprechen |
REGEXP_SUBSTR() | Gibt den Substring zurück, der dem Regex-Muster entspricht |
Schauen wir uns einige Beispiele an:
REGEXP_LIKE()
SELECT * FROM products WHERE REGEXP_LIKE(product_name, '^iPhone');
Dies findet alle Produkte, deren Namen mit 'iPhone' beginnen.
REGEXP_INSTR()
SELECT email, REGEXP_INSTR(email, '@') AS at_position
FROM users;
Dies gibt die Position des '@'-Symbols in jeder E-Mail-Adresse zurück.
REGEXP_REPLACE()
SELECT REGEXP_REPLACE('Hello, World!', '[aeiou]', '*') AS vowels_replaced;
Dies ersetzt alle Vokale durch Sternchen und gibt 'Hll, W*rld!' zurück.
REGEXP_SUBSTR()
SELECT REGEXP_SUBSTR('[email protected]', '[^@]+') AS username;
Dies extrahiert den Benutzernamen einer E-Mail-Adresse.
Schlussfolgerung
Glückwunsch! Sie haben gerade Ihre ersten Schritte in die mächtige Welt der MySQL-Regulären Ausdrücke gemacht. Denken Sie daran, dass Übung den Meister macht. Versuchen Sie, eigene Regex-Muster zu erstellen und verschiedene Kombinationen auszuprobieren.
Während Sie Ihre Reise fortsetzen, werden Sie feststellen, dass Regex wie ein Schweizer Taschenmesser in Ihrem Datenbank-Werkzeugkasten ist. Es mag am Anfang etwas knifflig erscheinen, aber wenn Sie den Dreh raus kriegen, werden Sie sich fragen, wie Sie jemals ohne ausgekommen sind!
Frohes Coden und möge Ihre Abfragen stets die Ergebnisse zurückgeben, die Sie suchen!
Credits: Image by storyset