mysql teilt eine Datenzeile basierend auf Kommas in mehrere Zeilen auf

mysql teilt eine Datenzeile basierend auf Kommas in mehrere Zeilen auf

Trennwirkung

-- Vor der Trennung
1,2,3,4
-- Nach der Trennung
1
2
3
4

Separate Befehlszeilen

WÄHLEN 
 Teilstring_index(Teilstring_index('1,2,3,4',',', b.help_topic_id + 1), ',', -1) Ergebnis
AUS 
 mysql.help_topic b
Wo 
 b.help_topic_id < (LÄNGE('1,2,3,4') - LÄNGE(ERSETZEN('1,2,3,4', ',', '')) + 1);

Erläuterung der Befehlszeile

help_topic selbst ist eine Mysql-Hilfe-Erklärungskommentartabelle, die zur Erklärung verschiedener Mysql-Begriffe verwendet wird. Da die Daten-ID dieser Tabelle von 0 an ansteigt, ist es für uns bequem zu zählen, aber die Version 8.0.17 hat nur 686 Daten. Wenn diese Zahl überschritten wird, müssen wir eine Tabelle anpassen

Es kann als temporäre Tabelle zum Zählen verwendet werden. Die Abfrageanweisung verwendet nur help_topic zum Zählen. Der überschüssige Teil sind tatsächlich fehlerhafte Daten.

b.help_topic_id < Gesamtanzahl der Zeilen nach der Trennung abrufen

b.help_topic_id < (LÄNGE('1,2,3,4') - LÄNGE(ERSETZEN('1,2,3,4', ',', '')) + 1)

Diese Anweisung ist eigentlich eine Durchquerung, help_topic_id beginnt bei 0 und steigt auf

Abfangen in der Reihenfolge, zuerst alle Zeichen vor dem n-ten Trennzeichen abfangen, dann das letzte Zeichen der Zeichenfolge abfangen

1 —— 1
1,2 —— 2
1,2,3 —— 3
1,2,3,4 —— 4

mysql.help_topic keine Berechtigungslösung

Die Funktion von mysql.help_topic besteht darin, die Daten aus der Funktion SUBSTRING_INDEX (also die durch das Trennzeichen getrennten Daten) zu verbinden, um ein kartesisches Produkt zu erstellen.

Wenn Sie keine Berechtigung zur Verwendung von mysql.help_topic haben, können Sie eine temporäre Tabelle erstellen, um eine Verbindung mit der Tabelle herzustellen, die Sie abfragen möchten.

Holen Sie sich die maximale Anzahl von Zeichenfolgen, in die das Feld aufgeteilt werden kann:

Wählen Sie MAX (LÄNGE (a. `name`) - LÄNGE (ersetzen (a. `name`, ',', '' )) + 1) von `test` a;

Erstellen Sie eine temporäre Tabelle und fügen Sie ihr Daten hinzu:

Beachten:

  • Die temporäre Tabelle muss eine Spalte mit automatisch inkrementierten Daten enthalten, beginnend bei 0 oder 1
  • Der Name der temporären Tabelle ist beliebig und es kann nur ein Feld geben
  • Die Menge der temporär darzustellenden Daten muss größer sein als MAX(LENGTH(a.name) - LENGTH(REPLACE(a.name, ',', '' )) + 1)

Beteiligte Funktionen

Teilstring_Index (Zeichenfolge, Trennzeichen, Anzahl)

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.

ersetzen(str, von_str, nach_str)

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

length(str) Ermittelt die Länge eines Strings

Dies ist das Ende dieses Artikels zum Aufteilen einer Datenzeile in mehrere Datenzeilen in MySQL auf der Grundlage von Kommas. Weitere Informationen zum Aufteilen einer Datenzeile in mehrere Zeilen in MySQL auf der Grundlage von Kommas finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • MySQL-String-Splitting-Beispiel (String-Extraktion ohne Trennzeichen)
  • MySQL-String-Aufteilungsvorgang (String-Abfangen mit Trennzeichen)
  • Vertikales und horizontales Aufteilen von MySQL-Tabellen
  • Beispiel-Tutorial zum Zusammenführen und Teilen von MySQL nach angegebenen Zeichen
  • Anwendungsbeispiele für MySQL-Interception- und Split-String-Funktionen
  • Zusammenfassung der Datenaufteilung in MySQL-Datenbanken: Unterbibliothek und Untertabelle
  • Allgemeine MySQL-Datenaufteilungsmethoden
  • Verwenden Sie Perl, um die Datentabelle (MySQL) aufzuteilen und die Dateninstanz zu migrieren

<<:  Anbieterpräfix: Warum brauchen wir ein Browser-Engine-Präfix?

>>:  Detaillierte Erklärung der HTML-Ereignisse „onfocus gain focus“ und „onblur lose focus“

Artikel empfehlen

Detaillierte Verwendung von Echarts in vue2 vue3

Inhaltsverzeichnis 1. Installation 2. Verwenden S...

So erstellen Sie Ihr eigenes Docker-Image und laden es auf Dockerhub hoch

1. Registrieren Sie zunächst Ihr eigenes Dockerhu...

JavaScript zum Erreichen eines einfachen Tab-Leisten-Umschaltens

In diesem Artikel wird der spezifische Code für J...

So implementieren Sie den Selbststart eines Docker-Containers

Container-Autostart Docker bietet einen Neustartr...

Ubuntu16.04 erstellt eine php5.6-Webserverumgebung

Ubuntu 16.04 installiert standardmäßig die PHP7.0...

Analyse des Konfigurationsprozesses der Nginx-HTTP-Integritätsprüfung

Passive Prüfung Mit passiven Integritätsprüfungen...

Installieren Sie Docker unter CentOS 7

Wenn Sie kein Linux-System haben, finden Sie unte...

Fallerklärung für den Nginx-Reverse-Proxy zu Go-FastDFS

Hintergrund go-fastdfs ist ein verteiltes Dateisy...

Detaillierte Erläuterung des Quellcodes der vue.$set()-Methode von Vue

Bei der Verwendung von Vue zum Entwickeln von Pro...

So implementieren Sie eine bidirektionale Bindungsfunktion in vue.js mit reinem JS

Inhaltsverzeichnis Lassen Sie uns zunächst über d...

Flex-Grow-, Flex-Shrink-, Flex-Basis- und Neun-Raster-Layout verstehen

1. Flex-Grow-, Flex-Shrink- und Flex-Basis-Eigens...