MySQL - REGEXP_SUBSTR() Funktion

Hallo da, zukünftige Datenbank-Zauberer! Heute begeben wir uns auf eine aufregende Reise in die Welt der MySQL-Funktion REGEXP_SUBSTR(). Keine Sorge, wenn du neu im Programmieren bist – ich werde dein freundlicher Guide sein und alles Schritt für Schritt erklären. Also, hole dir einen Kaffee und tauchen wir ein!

MySQL - regexp_substr() Function

Was ist REGEXP_SUBSTR()?

Bevor wir mit dem Code anfangen, lassen wir uns erst einmal anschauen, was REGEXP_SUBSTR() eigentlich macht. Stell dir vor, du bist ein Detektiv, der nach spezifischen Mustern in einem langen Textstring sucht. Genau das tut REGEXP_SUBSTR() – es ist wie eine superkluge Lupe für deine Datenbank!

REGEXP_SUBSTR() ist eine Funktion in MySQL, die reguläre Ausdrücke verwendet, um spezifische Muster in einem String zu suchen und zu extrahieren. Es ist wie ein Schweizer Army Knife für die Textmanipulation in deiner Datenbank!

Syntax

So sieht die REGEXP_SUBSTR()-Funktion aus:

REGEXP_SUBSTR(subject, pattern[, position[, occurrence[, match_type]]])

Lass dich davon nicht abschrecken! Wir werden das Schritt für Schritt auseinandernehmen:

  • subject: Der String, in dem wir suchen möchten (unser Heuhaufen)
  • pattern: Das reguläre Ausdrucks-Muster, nach dem wir suchen (unsere Nadel)
  • position: Wo wir mit der Suche beginnen sollen (optional, Standard ist 1)
  • occurrence: Welche Übereinstimmung zurückgegeben werden soll, wenn es mehrere gibt (optional, Standard ist 1)
  • match_type: Zusätzliche Optionen für die Übereinstimmung (optional)

Grundlegende Verwendung

Lassen wir mit einem einfachen Beispiel anfangen, um unsere Füße zu testen:

SELECT REGEXP_SUBSTR('Hello, World!', 'World') AS result;

Wenn du diese Abfrage ausführst, bekommst du:

result
World

Was ist hier passiert? Wir haben MySQL gebeten, das Wort 'World' im String 'Hello, World!' zu finden, und es hat das getan!

Kreativ werden

Nun, lassen's uns etwas anspruchsvoller werden. Angenommen, wir haben eine Liste von E-Mail-Adressen und wir möchten nur die Domains extrahieren:

SELECT REGEXP_SUBSTR('[email protected]', '@(.+)$') AS domain;

Ergebnis:

domain
@example.com

Ups! Wir haben das '@'-Symbol auch bekommen. Lassen's uns unser Muster verfeinern:

SELECT REGEXP_SUBSTR('[email protected]', '@(.+)$', 1, 1, 'c') AS domain;

Ergebnis:

domain
example.com

Besser! Das 'c' im match_type-Parameter tells MySQL, die gefangene Gruppe (den Teil in Klammern) anstelle der gesamten Übereinstimmung zurückzugeben.

Arbeiten mit echten Daten

Lassen's uns eine kleine Tabelle zum Üben erstellen:

CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
email VARCHAR(100)
);

INSERT INTO users (email) VALUES
('[email protected]'),
('[email protected]'),
('[email protected]');

Nun extrahieren wir alle Domains:

SELECT email, REGEXP_SUBSTR(email, '@(.+)$', 1, 1, 'c') AS domain
FROM users;

Ergebnis:

email domain
[email protected] gmail.com
[email protected] yahoo.com
[email protected] hotmail.com

Ist das nicht toll? Mit nur einer Abfrage haben wir alle Domainnamen extrahiert!

Fortgeschrittene Techniken

Mehrfache Vorkommen

Manchmal möchte man mehrere Vorkommen eines Musters finden. Sehen wir uns das an:

SELECT REGEXP_SUBSTR('apple,banana,cherry,date', '[^,]+', 1, 1) AS first_fruit,
REGEXP_SUBSTR('apple,banana,cherry,date', '[^,]+', 1, 2) AS second_fruit,
REGEXP_SUBSTR('apple,banana,cherry,date', '[^,]+', 1, 3) AS third_fruit;

Ergebnis:

first_fruit second_fruit third_fruit
apple banana cherry

Hier verwenden wir [^,]+, um alle Zeichen zu matchen, die kein Komma sind. Die Zahlen am Ende (1, 2, 3) sagen MySQL, welches Vorkommen zurückgegeben werden soll.

Case-Insensitive Übereinstimmung

Was ist, wenn wir Muster unabhängig vom Fall.matchen möchten? Wir können die Option 'i' verwenden:

SELECT REGEXP_SUBSTR('The Quick Brown Fox', 'quick', 1, 1, 'i') AS result;

Ergebnis:

result
Quick

Selbst wenn wir 'quick' in Kleinbuchstaben gesucht haben, haben wir 'Quick' im String gefunden!

REGEXP_SUBSTR() Funktion in einem Client-Programm verwenden

Obwohl MySQL Workbench großartig für das Ausführen von Abfragen ist, kannst du REGEXP_SUBSTR() auch in verschiedenen Programmiersprachen verwenden. Hier ist ein schneller Beispiel in Python:

import mysql.connector

# Verbinde dich mit deiner MySQL-Datenbank
cnx = mysql.connector.connect(user='your_username', password='your_password',
host='127.0.0.1', database='your_database')
cursor = cnx.cursor()

# Führe eine Abfrage mit REGEXP_SUBSTR() aus
query = "SELECT REGEXP_SUBSTR('Hello, World!', 'World') AS result"
cursor.execute(query)

# Hole und drucke das Ergebnis
result = cursor.fetchone()
print(f"Das Ergebnis ist: {result[0]}")

# Vergiss nicht, die Verbindung zu schließen
cnx.close()

Dieses Skript verbindet sich mit deiner MySQL-Datenbank, führt eine einfache REGEXP_SUBSTR()-Abfrage aus und druckt das Ergebnis.

Fazit

Glückwunsch! Du hast deine ersten Schritte in die mächtige Welt der REGEXP_SUBSTR() gemacht. Erinnere dich daran, wie jeder gute Detektiv Werkzeug, es braucht Übung, um es zu meistern. Habe keine Angst, verschiedene Muster und Optionen auszuprobieren.

Hier ist eine praktische Tabelle, die die Parameter von REGEXP_SUBSTR() zusammenfasst:

Parameter Beschreibung Optional?
subject Der String, in dem wir suchen möchten Nein
pattern Der reguläre Ausdrucks-Muster, nach dem wir suchen Nein
position Wo wir mit der Suche beginnen sollen Ja
occurrence Welche Übereinstimmung zurückgegeben werden soll Ja
match_type Zusätzliche Übereinstimmungs-Optionen (z.B. 'c', 'i') Ja

Übe weiter, und bald wirst du Strings wie ein Profi manipulieren und extrahieren können! Erinnere dich daran, in der Welt der Datenbanken ist die Fähigkeit, spezifische Daten zu manipulieren und zu extrahieren, eine Superkraft. Und jetzt bist du auf dem Weg, ein Superheld zu werden!

Credits: Image by storyset