MySQL SUBSTRING() erklärt: Teile eines Strings extrahieren – mit Beispielen

1. Was ist die SUBSTRING‑Funktion?

Die SUBSTRING‑Funktion ist eine wichtige MySQL‑Funktion, mit der ein Teilstring aus einem String extrahiert wird. Mit dieser Funktion können Sie nur den Teil herausziehen, den Sie aus in einer Datenbank gespeicherten Daten benötigen. Zum Beispiel ist sie nützlich, wenn Sie den Domain‑Teil aus der E‑Mail‑Adresse eines Benutzers extrahieren oder einen bestimmten Abschnitt aus einem Produktcode abrufen möchten.

1.1 Grundsyntax

Die Grundsyntax der SUBSTRING‑Funktion lautet wie folgt:

SUBSTRING(str, pos)
SUBSTRING(str, pos, len)
  • str : Der String, aus dem extrahiert werden soll.
  • pos : Die Startposition (beginnt bei 1).
  • len : Die Anzahl der zu extrahierenden Zeichen (optional).

Ist pos ein positiver Wert, zählt MySQL von Anfang des Strings vorwärts. Ist er negativ, zählt MySQL von Ende des Strings rückwärts. Wird len weggelassen, extrahiert MySQL vom angegebenen Start bis zum Ende des Strings.

1.2 Anwendungsfälle für die SUBSTRING‑Funktion

Diese Funktion wird verwendet, um Zeichenketten zu formatieren und bestimmte Teile zu extrahieren, wodurch das Suchen und Verarbeiten von Informationen in einer Datenbank effizienter wird.

2. Grundlegende Verwendung der SUBSTRING‑Funktion

Um die Grundlagen zu verstehen, schauen wir uns einige einfache Beispiele an.

2.1 Extrahieren eines Teils eines Strings

Die folgende Abfrage extrahiert 6 Zeichen, beginnend mit dem 3. Zeichen des Strings „Hello, World!”.

SELECT SUBSTRING('Hello, World!', 3, 6);

Das Ergebnis ist "llo, W". Da pos 3 ist, beginnt die Extraktion beim 3. Zeichen, und weil len 6 ist, werden 6 Zeichen extrahiert.

2.2 Weglassen des Längenparameters

Wenn Sie len weglassen, extrahiert MySQL vom angegebenen Start bis zum Ende des Strings.

SELECT SUBSTRING('Hello, World!', 8);

Das Ergebnis ist "World!", also wird alles ab dem 8. Zeichen bis zum Ende zurückgegeben.

2.3 Verwendung einer negativen Position

Mit einem negativen Wert können Sie die Position vom Ende des Strings aus angeben.

SELECT SUBSTRING('Hello, World!', -5);

Diese Abfrage liefert "orld!" und extrahiert die letzten 5 Zeichen.

3. Praktische Anwendungen der SUBSTRING‑Funktion

Die SUBSTRING‑Funktion wird häufig in realen Datenoperationen eingesetzt. Hier einige praktische Beispiele.

3.1 Extrahieren einer Domain aus einer E‑Mail‑Adresse

Durch die Kombination von SUBSTRING mit LOCATE können Sie den Domain‑Teil aus einer E‑Mail‑Adresse extrahieren.

SELECT email, SUBSTRING(email, LOCATE('@', email) + 1) AS domain FROM users;

Diese Abfrage holt den String nach „@“ und gibt nur den Domain‑Teil zurück.

3.2 Extrahieren eines Teils eines Produktcodes

Dieses Beispiel extrahiert einen bestimmten Abschnitt eines Produktcodes.

SELECT product_code, SUBSTRING(product_code, 5, 4) AS product_id FROM products;

In dieser Abfrage werden 4 Zeichen, beginnend mit dem 5. Zeichen des Produktcodes, extrahiert und als neue Spalte product_id angezeigt.

3.3 Verwendung in einer Unterabfrage

In Kombination mit einer Unterabfrage können Sie Daten unter komplexeren Bedingungen extrahieren.

SELECT id, SUBSTRING(description, 1, 10) AS short_desc FROM (SELECT * FROM products WHERE category = 'Electronics') AS sub;

Diese Abfrage extrahiert die ersten 10 Zeichen von description aus Produkten, deren category den Wert ‚Electronics‘ hat.

4. Vergleich mit anderen String‑Funktionen

Weitere Funktionen, die für ähnliche Zwecke wie SUBSTRING verwendet werden können, sind LEFT, RIGHT und SUBSTR.

4.1 LEFT‑ und RIGHT‑Funktionen

  • LEFT(str, len) : Gibt die angegebene Anzahl von Zeichen vom Anfang des Strings zurück.
  • RIGHT(str, len) : Gibt die angegebene Anzahl von Zeichen vom Ende des Strings zurück.
    SELECT LEFT('Hello, World!', 5);  -- "Hello"
    SELECT RIGHT('Hello, World!', 6); -- "World!"
    

Diese Funktionen sind praktisch, wenn Sie einen Teilstring vom Anfang oder vom Ende eines Strings extrahieren möchten.

4.2 SUBSTR‑Funktion

SUBSTR ist ein Alias für SUBSTRING, sodass es auf dieselbe Weise verwendet werden kann.

SELECT SUBSTR('Hello, World!', 8); -- "World!"

Diese Abfrage gibt "World!" zurück, genau wie SUBSTRING.

5. Erweiterte Nutzung und Optimierung der SUBSTRING‑Funktion

Dieser Abschnitt erklärt weiterführende Anwendungs- und Optimierungstechniken.

5.1 Leistungsoptimierung

Die Verwendung von SUBSTRING bei großen Datensätzen kann die Leistung beeinträchtigen. Bei Bedarf sollten Indizes erstellt und der Ausführungsplan der Abfrage überprüft werden. Außerdem, wenn Sie häufig denselben Teilstring extrahieren, sollten Sie das Ergebnis zwischenspeichern.

5.2 Verwendung in einer WHERE‑Klausel

Sie können SUBSTRING in einer WHERE‑Klausel verwenden, um Datensätze anhand einer Teilstring‑Bedingung zu filtern.

SELECT * FROM products WHERE SUBSTRING(product_code, 1, 3) = 'ABC';

Diese Abfrage sucht nach Produkten, bei denen die ersten 3 Zeichen von product_code ‚ABC‘ sind.

6. Beispiele und bewährte Vorgehensweisen für die SUBSTRING‑Funktion

Hier finden Sie praktische Beispiele für die Verwendung von SUBSTRING sowie bewährte Vorgehensweisen für den realen Einsatz.

6.1 Beispielcode

Das folgende Beispiel teilt den vollständigen Namen eines Kunden in Vor‑ und Nachnamen auf.

SELECT name, SUBSTRING(name, 1, LOCATE(' ', name) - 1) AS first_name,
       SUBSTRING(name, LOCATE(' ', name) + 1) AS last_name
FROM customers;

In dieser Abfrage werden Vor‑ und Nachname aus einem durch ein Leerzeichen getrennten vollständigen Namen extrahiert.

6.2 Bewährte Vorgehensweisen

  • Extrahieren Sie nur das, was Sie benötigen: Halten Sie die Länge des Teilstrings so klein wie möglich, um die Leistungsbelastung zu reduzieren.
  • Achten Sie auf Datentypen: Wenn Sie SUBSTRING auf numerische Daten anwenden, müssen Sie diese möglicherweise explizit in einen String umwandeln.
  • Berücksichtigen Sie die Indexnutzung: Bei Verwendung von SUBSTRING in einer WHERE‑Klausel werden Indizes möglicherweise nicht effektiv genutzt, daher sollten Sie die Abfrageleistung genau beobachten.

7. Fehlerbehandlung und Versionsunterschiede

Dieser Abschnitt behandelt die Fehlerbehandlung bei der Verwendung von SUBSTRING sowie Unterschiede zwischen MySQL‑Versionen.

7.1 Fehlerbehandlung

Wenn die angegebene Position außerhalb des Zeichenkettenbereichs liegt, gibt SUBSTRING eine leere Zeichenkette zurück. Da dies kein Fehler ist, wird empfohlen, bei Bedarf im Voraus Logik hinzuzufügen, um das Ergebnis zu validieren.

7.2 Versionsunterschiede

Je nach MySQL‑Version kann das Verhalten der SUBSTRING‑Funktion variieren. Beispielsweise können einige ältere Versionen mehrbyte‑Zeichen anders behandeln. Prüfen Sie die Kompatibilität zwischen den Versionen und ergreifen Sie bei Bedarf geeignete Maßnahmen.