MySQL teilt Zeichenfolge in Zeilen auf
- String in Zeilen in MySQL aufteilen
-
String mit der Methode
SUBSTRING_INDEX()
in Zeilen aufteilen - Abschluss
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:
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:
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:
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:
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.
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
- Strings an ein vorhandenes Feld in MySQL anhängen
- Generieren zufällige und eindeutige Zeichenfolgen in MySQL
- Suchen nach Vorkommen von Zeichenketten in der MySQL-Datenbank
- Suchzeilen zum Auffinden von Teilstrings in MySQL
- Einzelnes Anführungszeichen in MySQL umgehen