MySQL-String-Aufteilungsvorgang (String-Abfangen mit Trennzeichen)

MySQL-String-Aufteilungsvorgang (String-Abfangen mit Trennzeichen)

String-Extraktion ohne Trennzeichen

Fragenanforderungen

Feldwert in der Datenbank:

Implementierungseffekt: Eine Datenzeile muss in mehrere Zeilen umgewandelt werden

Implementiertes SQL

Wählen Sie links (Substring ('P1111', Hilfethema-ID + 1), 1) als Nummer aus mysql.help_topic, wobei Hilfethema-ID < Länge ('P1111');

Beteiligte Wissenspunkte

1. String-Abfangen: SUBSTRING(str,pos)

1. Parameterbeschreibung

Parametername erklären
str Die zu teilende Zeichenfolge
delim Trennzeichen, durch ein Zeichen getrennt
zählen Wenn „Anzahl“ eine positive Zahl ist, werden alle Zeichen vor dem n-ten Trennzeichen übernommen. Wenn „Anzahl“ eine negative Zahl ist, werden alle Zeichen nach dem n-ten Trennzeichen vom Ende her übernommen.

2. Beispiele

(1) Alle Zeichen vor dem zweiten Komma "," als Trennzeichen verwenden.

SUBSTRING_INDEX('7654,7698,7782,7788',',',2)

(2) Alle Zeichen nach dem vorletzten Kommatrennzeichen "," abrufen

SUBSTRING_INDEX('7654,7698,7782,7788',',',-2)

2. Ersetzungsfunktion: replace(str, from_str, to_str)

1. Parametererklärung

Parametername erklären
str Die zu ersetzende Zeichenfolge
from_str Die zu ersetzende Zeichenfolge
zu_str Die zu ersetzende Zeichenfolge

2. Beispiele

(1) Ersetzen Sie das Trennzeichen ",", Komma durch das Leerzeichen "".

ERSETZEN('7654,7698,7782,7788',',','')

3. Ermitteln Sie die Länge des Strings: LENGTH( str )

1. Parametererklärung

Parametername erklären
str Die Zeichenfolge, deren Länge berechnet werden muss

2. Beispiele

(1) Ermitteln Sie die Länge der Zeichenfolge '7654,7698,7782,7788'

LÄNGE('7654,7698,7782,7788')

Implementiertes SQL-Parsing

WÄHLEN 
 SUBSTRING_INDEX(SUBSTRING_INDEX('7654,7698,7782,7788',',',help_topic_id+1),',',-1) AS Nummer 
AUS 
 mysql.hilfe_thema 
WO 
 Hilfethema-ID < LÄNGE('7654,7698,7782,7788')-LÄNGE(ERSETZEN('7654,7698,7782,7788',',',''))+1

Hier wird help_topic_id aus der help_topic-Tabelle der MySQL-Bibliothek als Variable verwendet, da help_topic_id automatisch inkrementiert wird. Natürlich können auch automatisch inkrementierte Felder anderer Tabellen als Hilfe verwendet werden.

help_topic-Tabelle:

Implementierungsschritte:

Schritt 1: Ermitteln Sie zunächst die Anzahl der Zeichenfolgen, die am Ende aufgeteilt werden müssen, und simulieren Sie mithilfe von help_topic_id das Durchlaufen der n-ten Zeichenfolge.

Der Codeausschnitt beinhaltete:

Hilfethema-ID < LÄNGE('7654,7698,7782,7788')-LÄNGE(ERSETZEN('7654,7698,7782,7788',',',''))+1

Schritt 2: Teilen Sie die Zeichenfolge basierend auf dem Komma "," mithilfe der Funktion SUBSTRING_INDEX (str, delim, count) auf und weisen Sie das Ergebnis dem Feld „num“ zu.

Der Codeausschnitt beinhaltete:

SUBSTRING_INDEX(SUBSTRING_INDEX('7654,7698,7782,7788',',',help_topic_id+1),',',-1) AS Nummer

Erster Schritt:

Verwenden Sie das Komma "," als Trennzeichen und fangen Sie alle Zeichenfolgen vor dem n+1. Trennzeichen entsprechend dem Wert von help_topic_id ab. (Hier liegt n+1 daran, dass help_topic_id bei 0 beginnt und wir es hier aus dem ersten Trennzeichen abrufen müssen.)

SUBSTRING_INDEX('7654,7698,7782,7788',',',Hilfethema-ID+1)

Zum Beispiel:

Wenn help_topic_id = 0, ist die erhaltene Zeichenfolge = 7654

Wenn help_topic_id = 1, ist die erhaltene Zeichenfolge = 7654,7698

…(und so weiter)

Schritt 2:

Verwenden Sie das Komma "," als Trennzeichen und extrahieren Sie alle Zeichenfolgen nach dem letzten Trennzeichen.

SUBSTRING_INDEX(SUBSTRING_INDEX('7654,7698,7782,7788',',',Hilfethema-ID+1),',',-1)

Zum Beispiel:

Laut dem ersten Schritt ist die erhaltene Zeichenfolge 7654, wenn help_topic_id = 0 ist. Zu diesem Zeitpunkt ist die im zweiten Schritt abgefangene Zeichenfolge 7654.

Laut dem ersten Schritt ist die erhaltene Zeichenfolge 7654,7698, wenn help_topic_id = 1 ist. Zu diesem Zeitpunkt ist die im zweiten Schritt abgefangene Zeichenfolge 7698.

…(und so weiter)

Schließlich wurden die folgenden Effekte erfolgreich erzielt ~

Hinweis: Informationen zum Aufteilen von Zeichenfolgen ohne Trennzeichen finden Sie unter MySQL – Zeichenfolgenaufteilung (Zeichenfolgenabfang ohne Trennzeichen).

Ergänzung: MySQL-Feldtrennzeichen split_Eine Funktion ähnlich SPLIT in MySQL zum Teilen von Zeichenfolgen

Die folgende Funktion implementiert die Verarbeitung von Zeichenfolgen wie Arrays.

1. Verwenden einer temporären Tabelle als Array

Erstellen Sie die Funktion f_split(@c varchar(2000),@split varchar(2)).
gibt @t table(col varchar(20)) zurück
als
beginnen
während(charindex(@split,@c)<>0)
beginnen
@t(col)-Werte einfügen (Teilzeichenfolge(@c,1,Charindex(@split,@c)-1))
setze @c = Zeug(@c,@c),'')
Ende
@t(col)-Werte einfügen (@c)
zurückkehren
Ende
gehen
wähle * aus dbo.f_split('dfkd,dfdkdf,dfdkf,dffjk',',')
Drop-Funktion f_split
spalte
--------------------
dfkd
Abonnieren
Abonnieren
Abonnieren

(Die Anzahl der betroffenen Zeilen beträgt 4)

2. Teilen Sie die Zeichenfolge durch das angegebene Symbol

Gibt die Anzahl der Elemente nach der Segmentierung zurück. Die Methode ist sehr einfach. Schauen Sie sich einfach an, wie viele Trennzeichen in der Zeichenfolge vorhanden sind, und fügen Sie dann eines hinzu. Das ist das gewünschte Ergebnis.

CREATE-Funktion Get_StrArrayLength
(
@str varchar(1024),--der zu teilende String @split varchar(10) --Trennzeichen)
gibt int zurück
als
beginnen
Deklarieren Sie @location int
deklarieren Sie @start int
Deklarieren Sie @length int
setze @str=ltrim(rtrim(@str))
setze @location=charindex(@split,@str)
setze @length=1
während @Standort<>0
beginnen
setze @start=@location+1
setze @location=charindex(@split,@str,@start)
setze @length=@length+1
Ende
returniere @Länge
Ende

Aufrufbeispiel:

Wählen Sie dbo.Get_StrArrayLength('78,2,3',')

Rückgabewert: 4

3. Teilen Sie die Zeichenfolge durch das angegebene Symbol

Gibt das Element am angegebenen Index nach der Segmentierung zurück, so bequem wie ein Array

CREATE-Funktion Get_StrArrayStrOfIndex
(
@str varchar(1024),--der zu teilende String @split varchar(10),--Trennzeichen @index int --das erste zu nehmende Element)
gibt varchar(1024) zurück
als
beginnen
Deklarieren Sie @location int
deklarieren Sie @start int
deklarieren Sie @next in
@seed int deklarieren
setze @str=ltrim(rtrim(@str))
setze @start=1
setze @next=1
setze @seed=len(@split)
setze @location=charindex(@split,@str)
während @location<>0 und @index>@next
beginnen
setze @start=@location+@seed
setze @location=charindex(@split,@start)
setze @next=@next+1
Ende
wenn @location =0 wähle @location =len(@str)+1
--Hier gibt es zwei Situationen: 1. Der String enthält kein Trennzeichen. 2. Der String enthält ein Trennzeichen. Nach dem Verlassen der while-Schleife ist @location 0, was bedeutet, dass standardmäßig ein Trennzeichen nach dem String steht.
Teilzeichenfolge zurückgeben(@str,@start,@location-@start)
Ende

Aufrufbeispiel:

Wählen Sie dbo.Get_StrArrayStrOfIndex('8,9,4',2)

Rückgabewert: 9

4. Kombinieren Sie die beiden oben genannten Funktionen und durchlaufen Sie die Elemente in der Zeichenfolge wie ein Array

Deklarieren Sie @str varchar (50)
setze @str='1,3,4,5'
deklarieren Sie @next in
setze @next=1
während @next<=dbo.Get_StrArrayLength(@str,')
beginnen
drucken dbo.Get_StrArrayStrOfIndex(@str,@next)
setze @next=@next+1
Ende

Anrufergebnis:

1

2

3

4

5

Das Obige ist meine persönliche Erfahrung. Ich hoffe, es kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden. Sollten dennoch Fehler oder unvollständige Überlegungen vorliegen, freue ich mich über eine Korrektur.

Das könnte Sie auch interessieren:
  • MySQL-String-Splitting-Beispiel (String-Extraktion ohne Trennzeichen)
  • MySql-String-Splitting zur Realisierung der Split-Funktion (Feld-Splitting und Spalten-Transfer)

<<:  CSS-Navigationsleistenmenü mit kleinem Dreieck-Implementierungscode

>>:  Grundlegende Nutzungsdetails zur Vue-Komponentenbildung

Artikel empfehlen

Vue führt weltweit SCSS (Mixin) ein

Inhaltsverzeichnis 1. mixin.scss 2. Einzeldateinu...

Erfahren Sie, wie Sie mit Webpack TypeScript-Code verpacken und kompilieren

TypeScript-Bündelung Webpack-Integration Normaler...

Beispiel für die Verwendung eines manipulationssicheren JavaScript-Objekts

Inhaltsverzeichnis Manipulationssicheres Javascri...

Eine kurze Einführung in MySQL InnoDB ReplicaSet

Inhaltsverzeichnis 01 Einführung in InnoDB Replic...

Detaillierte Erläuterung der JS ES6-Codierungsstandards

Inhaltsverzeichnis 1. Umfang des Blocks 1.1. let ...

Problemlösungsvorgänge für Alpine Docker-Bildschriftarten

1. Führen Sie Schriftarten aus, öffnen Sie den Sc...

MySql Installer 8.0.18 Visuelles Installationstutorial mit Bildern und Text

Inhaltsverzeichnis 1. MySQL 8.0.18 installieren 2...

Vue implementiert die richtige Slide-Out-Layer-Animation

In diesem Artikelbeispiel wird der spezifische Co...

MySQL 8.0.19 Win10 - Schnellinstallations-Tutorial

Dieses Tutorial enthält das Installationstutorial...