MySQL teilt Zeichenfolge in Zeilen auf

Migel Hewage Nimesha 15 Februar 2024
  1. String in Zeilen in MySQL aufteilen
  2. String mit der Methode SUBSTRING_INDEX() in Zeilen aufteilen
  3. Abschluss
MySQL teilt Zeichenfolge in Zeilen auf

MySQL speichert Daten in Tabellenspalten und -zeilen, und Benutzer können diese Daten definieren, steuern, manipulieren und abfragen. MySQL bietet uns verschiedene Funktionen, und eine Funktion, die wir haben können, ist das Aufteilen von Zeichenfolgen in Zeilen.

Dieser Artikel beschreibt das Aufteilen eines Strings in Zeilen, seine Verwendung und wie es in MySQL ausgeführt wird.

String in Zeilen in MySQL aufteilen

Wenn wir die Daten in Datenbanken manipulieren, interagieren wir manchmal mit Strings. Beispielsweise kann eine Tabelle die vollständigen Namen von Kunden, ihre Adressen und einige Beschreibungen enthalten.

Manchmal fügen wir diese Daten als Zeichenfolgen hinzu und müssen sie möglicherweise für verschiedene Zwecke in Zeilen aufteilen. Um dieses Ziel zu erreichen, stellt uns MySQL eine Methode zur Verfügung, SUBSTRING_INDEX().

String mit der Methode SUBSTRING_INDEX() in Zeilen aufteilen

SUBSTRING_INDEX() ist eine Funktion, die uns MySQL zur Verfügung stellt, um einen Teilstring aus einem String abzuleiten. Es prüft auf ein bestimmtes Trennzeichen, sodass die Teilzeichenfolge davor ausgegeben wird.

Die Syntax ist wie folgt:

SUBSTRING_INDEX(string, delimiter, number);

In der obigen Syntax gibt es drei Parameter. Der string bezieht sich auf die Zeile, die wir eingeben, um Teilstrings abzuleiten, und das Trennzeichen ist der Wert, nach dem die Funktion sucht.

Die Anzahl der Durchsuchungen des Trennzeichens wird als Anzahl bezeichnet. Die Zahl kann entweder eine positive Zahl oder eine negative Zahl sein.

Wenn es sich um eine positive Zahl handelt, erhalten wir den Teilstring links vom Trennzeichen vom Anfang bis zum Ende des Strings. Wenn es sich um eine negative Zahl handelt, erhalten wir die Teilzeichenfolge direkt bis zum Trennzeichen und beginnen mit der Suche nach dem Trennzeichen von hinten nach vorne in der Zeichenfolge.

Versuchen wir es an einem Beispiel.

SELECT SUBSTRING_INDEX('England, America, Japan, China',',',2) AS newp;

Wie oben gezeigt, haben wir eine Zeichenfolge mit vier durch Kommas getrennten Ländern angegeben. Als Trennzeichen haben wir dann das Komma übergeben, und als Zahl haben wir zwei vergeben.

Sehen wir uns das Ergebnis an.

Ausgang:

MySQL teilt Zeichenfolge in Zeilen auf - Ausgabe 1

Wie Sie sehen können, erhalten wir den Teilstring links vom zweiten Komma, da wir zwei als Zahl angegeben haben. Versuchen wir es noch einmal mit einer negativen Zahl wie bei Zahl.

SELECT SUBSTRING_INDEX('England, America, Japan, China',',',-1) AS newp;

Unten sehen Sie das Ergebnis des obigen Codes, und wie Sie sehen können, erhalten wir China als Ausgabe, weil wir -1 als Zahl angegeben haben, und da es sich um eine negative Zahl handelt, wurde das letzte Trennzeichen durchsucht und die richtige Teilzeichenfolge ausgegeben dazu.

Ausgang:

MySQL teilt Zeichenfolge in Zeilen auf - Ausgabe 2

Sehen wir uns nun an, wie wir mit dieser Methode eine Zeichenfolge in Zeilen aufteilen können. Siehe folgendes Beispiel.

DELIMITER //

-- Creating a procedure
CREATE procedure newProcedure()

BEGIN
-- Declaring a variable as myvar to store the string
DECLARE myvar varchar (300);

-- Assigning the string to the variable
SET myvar = 'China.Japan.USA';

-- Deriving the substrings
(SELECT SUBSTRING_INDEX(myvar, '.', 1) AS Countries)
UNION
(SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(myvar, '.', 2),'.','-1') AS Countries)
UNION
(SELECT SUBSTRING_INDEX(myvar, '.', -1) AS Countries);
END //
DELIMITER ;

-- Calling the procedure
CALL newProcedure()

Im obigen Code haben wir eine Prozedur namens newProcedure erstellt und dann eine Variable zum Speichern der Zeichenfolge deklariert. Die Zeichenfolge enthält Punktsymbole, sodass sie unser Trennzeichen sein wird.

Wir haben die Methode SUBSTING_INDEX viermal verwendet (zweimal in der Mitte, um die mittlere Teilzeichenfolge zu erhalten) und UNION, um diese Teilzeichenfolgen in einer einzigen Spalte zu haben. Endlich haben wir unsere Prozedur aufgerufen, und die Ausgabe ist unten.

Ausgang:

MySQL teilt Zeichenfolge in Zeilen auf - Ausgabe 3

Wir haben die Zeichenfolge in Zeilen aufgeteilt, aber dieser Code wird schwierig, wenn wir mehr als drei Punkte haben.

Um dieses Problem zu lösen, können wir eine Lösung erstellen. Zuerst können wir eine Tabelle mit einer einzigen Spalte erstellen, die Ländernamen enthält.

Die Ländernamen, die wir hinzufügen, haben mehr als einen Namen, da wir den vollständigen Namen aufteilen müssen. Lassen Sie uns eine Tabelle mit drei Ländernamen wie folgt erstellen.

CREATE TABLE countries (countryName VARCHAR(100));
INSERT INTO countries VALUES
('United States America'),
('New Zeland'),
('United Kingdom');

Lassen Sie uns nun eine weitere Tabelle namens numberList erstellen, die eins, zwei und drei als Daten enthält.

CREATE TABLE numberList (indexing INT);
INSERT INTO numberList VALUES (1),(2),(3);

Der Zweck dieser Tabelle besteht darin, eine maximale Anzahl von zu teilenden Teilzeichenfolgen festzulegen. Wir haben drei Ziffern hinzugefügt, und wenn der Code ausgeführt wird, zerlegt er den String in maximal drei Teilstrings, selbst wenn er vier Teilstrings innerhalb der Zeile enthält.

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(countries.countryName, ' ', numberList.indexing), ' ', -1) countryName
FROM numberList
INNER JOIN countries
ON CHAR_LENGTH (countries.countryName) -CHAR_LENGTH(REPLACE(countries.countryName, ' ', '')) >= numberList.indexing - 1

Im obigen Codeabschnitt haben wir die Funktion SUBSTRING_INDEX verwendet und darin als Trennzeichen für die Suche eingefügt, da die Ländernamen durch Leerzeichen getrennt sind. Dann haben wir geprüft, ob die Ländernamen mehr als drei Teilstrings haben.

Danach haben wir die Teilzeichenfolgen in Zeilen gedruckt.

Vollständiger Code:

-- Creating the table
CREATE TABLE countries (countryName VARCHAR(100));

-- Inserting values
INSERT INTO countries VALUES
('United States America'),
('New Zeland'),
('United Kingdom');

-- Create a table that contains the numbers
CREATE TABLE numberList (indexing INT);
INSERT INTO numberList VALUES (1),(2),(3);

-- Deriving the substrings
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(countries.countryName, ' ', numberList.indexing), ' ', -1) countryName
FROM numberList
INNER JOIN countries
ON CHAR_LENGTH (countries.countryName) -CHAR_LENGTH(REPLACE(countries.countryName, ' ', '')) >= numberList.indexing - 1

Unten ist das Ergebnis, das wir nach dem Ausführen des Codes erhalten.

Ausgang:

MySQL teilt Zeichenfolge in Zeilen auf - Ausgabe 4

Wie Sie sehen können, sind die Ländernamen erwartungsgemäß in Teilstrings unterteilt.

Abschluss

Durch diesen Artikel hatten wir eine kurze Einführung in MySQL. Dann haben wir gelernt, warum wir einen String in Zeilen aufteilen müssen und wie man das in MySQL durchführt.

Um das Ziel zu erreichen, hat uns MySQL die Methode SUBSTRING_INDEX zur Verfügung gestellt, und wir haben uns angesehen, wie wir sie verwenden können, um die Aufgabe zu erledigen.

Es gibt andere Methoden, um diese Aufgabe zu erledigen, wie zum Beispiel die Funktion STRING_SPLIT, aber die Technik, die wir in diesem Artikel besprochen haben, ist die beste Methode in MySQL.

Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.

Verwandter Artikel - MySQL String

Verwandter Artikel - MySQL Row