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!

MySQL - Regular Expressions

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