MySQL REGEXP_LIKE() Funktion: Ein Anfängerguide

Hallo da, zukünftige Datenbank-Zauberer! Heute machen wir uns auf eine aufregende Reise in die Welt von MySQL und erkunden eine mächtige Funktion namens REGEXP_LIKE(). Machen Sie sich keine Sorgen, wenn Sie noch nie eine Zeile Code geschrieben haben – ich werde Ihr freundlicher Guide sein, und wir gehen das Schritt für Schritt durch. Am Ende dieses Tutorials werden Sie reguläre Ausdrücke wie ein Profi einsetzen können!

MySQL - regexp_like() Function

Was ist REGEXP_LIKE()?

Bevor wir uns den Details widmen, lassen Sie uns verstehen, was REGEXP_LIKE() eigentlich macht. Stellen Sie sich vor, Sie sind ein Detektiv, der nach einem bestimmten Muster in einem Meer aus Text sucht. Genau das tut REGEXP_LIKE() – es sucht nach Mustern in Ihren Daten mithilfe von etwas, das reguläre Ausdrücke (kurz: regex) genannt wird.

Die Grundlagen

REGEXP_LIKE() ist eine Funktion in MySQL, die den Wert 1 (wahr) zurückgibt, wenn eine Zeichenkette auf ein reguläres Ausdrucks-Muster passt, und 0 (falsch), wenn sie nicht passt. Es ist, als würden Sie fragen: "Hey MySQL, sieht dieser Text so aus, wie ich suche?"

Lassen Sie uns die Syntax zerlegen:

REGEXP_LIKE(expr, pattern[, match_type])
  • expr: Dies ist der Text, den Sie durchsuchen möchten.
  • pattern: Dies ist das reguläre Ausdrucks-Muster, nach dem Sie suchen.
  • match_type: Dies ist optional und ermöglicht es Ihnen, anzugeben, wie Sie die Übereinstimmung durchführen möchten (case-sensitive, mehrzeilig, etc.).

Einstieg in REGEXP_LIKE()

Dein erster REGEXP_LIKE()-Abfrage

Lassen Sie uns mit einem einfachen Beispiel beginnen. Angenommen, wir haben eine Tabelle namens books mit einer Spalte title. Wir möchten alle Bücher finden, die das Wort "SQL" im Titel haben.

SELECT title
FROM books
WHERE REGEXP_LIKE(title, 'SQL');

Diese Abfrage wird alle Buchtitel zurückgeben, die "SQL" enthalten, unabhängig vom Fall (SQL, sql, SqL, etc.).

Case Sensitivity

Was ist, wenn wir spezifischer sein möchten und nur "SQL" in Großbuchstaben matchen möchten? Wir können den match_type-Parameter verwenden:

SELECT title
FROM books
WHERE REGEXP_LIKE(title, 'SQL', 'c');

Das 'c' weist MySQL an, eine case-sensitive Übereinstimmung durchzuführen.

Erweiterte Mustererkennung

Nun, da wir unsere Füße nass gemacht haben, tauchen wir tiefer ein!

Muster am Anfang oder Ende matchen

Um Muster am Anfang einer Zeichenkette zu matchen, verwenden Sie '^':

SELECT title
FROM books
WHERE REGEXP_LIKE(title, '^The');

Dies findet alle Bücher, die mit "The" beginnen.

Um am Ende zu matchen, verwenden Sie '$':

SELECT title
FROM books
WHERE REGEXP_LIKE(title, 'Edition$');

Dies findet Bücher, die mit "Edition" enden.

Mehrere Muster matchen

Möchten Sie Bücher über SQL oder Python finden? Kein Problem!

SELECT title
FROM books
WHERE REGEXP_LIKE(title, 'SQL|Python');

Das '|' verhält sich wie ein "ODER"-Operator in regex.

Zeichen im Bereich matchen

Angenommen, wir möchten Bücher mit Zahlen in ihren Titeln finden:

SELECT title
FROM books
WHERE REGEXP_LIKE(title, '[0-9]');

Dies wird jede Titel mit einer Ziffer von 0 bis 9 matchen.

Praktische Beispiele

Beispiel 1: E-Mail-Adressen finden

Stellen Sie sich vor, Sie haben eine Tabelle customers und möchten E-Mail-Adressen validieren:

SELECT email
FROM customers
WHERE REGEXP_LIKE(email, '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}$');

Dieses komplexe Muster überprüft eine gültige E-Mail-Format. Lassen Sie uns das aufschlüsseln:

  • ^[A-Za-z0-9._%+-]+: Beginnt mit einem oder mehreren Buchstaben, Zahlen oder bestimmten Symbolen
  • @: Gefolgt von einem @-Symbol
  • [A-Za-z0-9.-]+: Dann ein oder mehrere Buchstaben, Zahlen, Punkte oder Bindestriche
  • \\.[A-Za-z]{2,}$: Endet mit einem Punkt und mindestens zwei Buchstaben

Beispiel 2: Telefonnummern suchen

Lassen Sie uns Telefonnummern in einem bestimmten Format finden:

SELECT phone
FROM contacts
WHERE REGEXP_LIKE(phone, '^\\+1-[0-9]{3}-[0-9]{3}-[0-9]{4}$');

Dieses Muster matcht Telefonnummern wie +1-123-456-7890.

REGEXP_LIKE() Funktion in einem Client-Programm

Wenn Sie mit einem MySQL-Client-Programm wie dem MySQL-Befehlszeilen-Client arbeiten, können Sie REGEXP_LIKE() in Ihren Abfragen verwenden, genau wie wir es in unseren Beispielen getan haben. So könnten Sie es in einem Client-Programm verwenden:

  1. Verbinden Sie sich mit Ihrer MySQL-Datenbank:

    mysql -u your_username -p your_database_name
  2. Sobald verbunden, können Sie Abfragen mit REGEXP_LIKE() ausführen:

    SELECT * FROM your_table WHERE REGEXP_LIKE(your_column, 'your_pattern');

Denken Sie daran, die Stärke von REGEXP_LIKE() liegt darin, dass es nahtlos funktioniert, egal ob Sie ein GUI-Tool, einen Befehlszeilen-Client oder SQL in Ihrer Anwendungskode verwenden!

Schlussfolgerung

Herzlichen Glückwunsch! Sie haben gerade Ihre ersten Schritte in die mächtige Welt der regulären Ausdrücke in MySQL unternommen. REGEXP_LIKE() ist eine vielseitige Funktion, die Ihnen hilft, Muster in Ihren Daten zu finden, die mit einfachen LIKE-Vergleichen schwierig oder unmöglich wären.

Erinnern Sie sich daran, Übung macht den Meister. Versuchen Sie, Ihre eigenen Muster zu erstellen und sie an Beispiel-Daten zu testen. Bereitwillig werden Sie sehen, dass Sie mit REGEXP_LIKE() wie ein echter Datenbankdetektiv Einblicke in Ihre Daten gewinnen!

Frohes Abfragen und möge Ihre regulären Ausdrücke immer ihren Match finden!

Credits: Image by storyset