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!
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:
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