Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So teilen Sie eine Zeichenfolge in MySQL

Problem:

Sie möchten einen String in MySQL aufteilen.

Beispiel:

Unsere Datenbank hat eine Tabelle namens Student mit Daten in den Spalten id und name .

id Name
1 Ann Smith
2 Mark Twain
3 Brad Green

Lassen Sie uns die Daten aus dem Spaltennamen abrufen und in firstname aufteilen und lastname .

Lösung:

Wir verwenden den SUBSTRING_INDEX() Funktion. Hier ist die Abfrage:

SELECT
SUBSTRING_INDEX(name,' ',1) AS firstname,
SUBSTRING_INDEX(name,' ',-1) AS lastname
FROM Student

Hier ist das Ergebnis der Abfrage:

Vorname Nachname
Ann Smith
Markieren Twain
Brad Grün

Diskussion:

Die Funktion SUBSTRING_INDEX() akzeptiert 3 Argumente:die Quellzeichenfolge, das Trennzeichen und die Anzahl der Vorkommen des Trennzeichens.

Die Quellzeichenfolge ist die Zeichenfolge, die wir teilen möchten.

Das Trennzeichen ist eine Zeichenkette, die SUBSTRING_INDEX() Funktion sucht in der Quellzeichenfolge. Wenn es gefunden wird, gibt es die Stelle an, an der die Teilzeichenfolge endet. Das Trennzeichen kann ein einzelnes Zeichen sein, z. B. ein Leerzeichen, aber es kann auch ein Muster sein, das aus zwei oder mehr Zeichen besteht. Bei diesem Muster wird zwischen Groß- und Kleinschreibung unterschieden; das heißt, es spielt eine Rolle, ob die angegebenen Zeichen Groß- oder Kleinbuchstaben sind. Denken Sie daran, dass das Trennzeichen eine Zeichenfolge ist und daher in Anführungszeichen (‘‘) geschrieben werden muss.

Das letzte Argument ist die Vorkommensanzahl . Es gibt an, wie oft das Trennzeichenmuster abgeglichen werden muss. Beachten Sie, dass die Anzahl der Vorkommen ein negativer Wert sein kann. Wenn es negativ ist, zählen wir die Vorkommen des Trennzeichens von rechts. Wenn die Zählung eine positive Zahl ist, wird von links gezählt.

Die Funktion gibt jedes Zeichen der Quellzeichenfolge aus, bis das Trennzeichen mit der Anzahl von Malen übereinstimmt, die durch die Anzahl der Vorkommen angegeben wird.

Wenn wir die folgende Abfrage ausführen:

SELECT
SUBSTRING_INDEX('Ann Smith',' ',1);

die Ausgabe wird sein:

Ann

Wie Sie sehen können, hat die Funktion alle Zeichen zurückgegeben, bis das erste Leerzeichen von links gefunden wurde.

In unserem Beispiel erhalten wir als Vornamen des Schülers alle Zeichen bis zum ersten Leerzeichen von links und als Nachnamen des Schülers alle Zeichen bis zum ersten Leerzeichen von rechts.