Tipps zur Konvertierung von MySQL-Spalten in Zeilen (teilen)

Tipps zur Konvertierung von MySQL-Spalten in Zeilen (teilen)

Vorwort:

Weil viele Geschäftstabellen Entwurfsmuster verwenden, die aus historischen oder Leistungsgründen gegen das erste Paradigma verstoßen. Das heißt, mehrere Attributwerte werden in derselben Spalte gespeichert (die konkrete Struktur finden Sie in der folgenden Tabelle).

In diesem Modus müssen Anwendungen die Spalte häufig basierend auf dem Trennzeichen aufteilen und das Ergebnis der Spalte-zu-Zeilen-Konvertierung abrufen.

Tabellendaten:

AUSWEIS Wert
1 winzig, klein, groß
2 klein, mittel
3 klein, groß

Erwartete Ergebnisse:

AUSWEIS Wert
1 winzig
1 klein
1 groß
2 klein
2 Medium
3 winzig
3 groß

Text:

#Die zu verarbeitende Tabelle create table tbl_name (ID int, mSize varchar(100));
in tbl_name-Werte einfügen (1, „winzig, klein, groß“);
in tbl_name-Werte einfügen (2, „klein, mittel“);
in tbl_name-Werte einfügen (3, „winzig, groß“);

#AutoIncrement-Tabelle für Schleife, erstelle Tabelle incre_table (AutoIncreID int);
in incre_table-Werte einfügen (1);
in incre_table-Werte einfügen (2);
in incre_table-Werte einfügen (3);
Wählen Sie a.ID, Teilstring_index (Teilstring_index (a.mSize,',',b.AutoIncreID),',',-1) 
aus 
tbl_name a
verbinden
incre_table b
auf b.AutoIncreID <= (Länge(a.mSize) - Länge(ersetzen(a.mSize,',',''))+1)
Bestellung nach a.ID;

Prinzipanalyse:

Das grundlegendste Prinzip dieser Verbindung ist das kartesische Produkt. Auf diese Weise wird der Zyklus erreicht.

Nachfolgend finden Sie eine Analyse der spezifischen Probleme:

length(a.Size) – length(replace(a.mSize,',',''))+1 gibt die Anzahl der Werte in der Spalte nach der Kommatrennung an, im Folgenden als n bezeichnet.

Pseudocode des Join-Prozesses:

Schleife nach ID

{

Beurteilung: ob i <= n

{

Holen Sie sich die Daten, die dem i-ten Komma am nächsten liegen, also substring_index(substring_index(a.mSize,',',b.ID),',',-1)

ich = ich +1

}

ID = ID +1

}

Zusammenfassen:

Der Nachteil dieser Vorgehensweise ist, dass wir eine separate Tabelle (hier increase_table) mit den fortlaufenden Spalten benötigen. Und der Maximalwert der kontinuierlichen Sequenz muss größer sein als die Anzahl der Werte, die die Segmentierungsanforderungen erfüllen.

Wenn es beispielsweise eine Zeile gibt, deren mSize 100 durch Kommas getrennte Werte hat, muss unsere increase_table mindestens 100 aufeinanderfolgende Zeilen haben.

Natürlich stehen in MySQL auch vorgefertigte Listen mit fortlaufenden Nummern zur Verfügung. Beispielsweise hat mysql.help_topic: help_topic_id insgesamt 504 Werte, was im Allgemeinen die meisten Anforderungen abdeckt.

Nach dem Umschreiben lautet es wie folgt:

Wählen Sie a.ID, Teilstring_index (Teilstring_index (a.mSize,',',b.help_topic_id+1),',',-1) 
aus 
tbl_name a
verbinden
mysql.help_topic b
auf b.help_topic_id < (Länge(a.mSize) – Länge(ersetzen(a.mSize,',',''))+1)
Bestellung nach a.ID;

Die oben stehenden Tipps zur Konvertierung von MySQL-Spalten in Zeilen (Teilen) sind der gesamte Inhalt, den der Editor mit Ihnen teilt. Ich hoffe, dass er Ihnen als Referenz dienen kann. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden.

Das könnte Sie auch interessieren:
  • So konvertieren Sie eine Spalte mit durch Kommas getrennten Werten in Spalten in MySQL
  • Detaillierte Erläuterung der MySQL-Zeilensperren beim Auftreten zusammengesetzter Primärschlüssel und mehrspaltiger Indizes
  • Mysql-Methode zum Berechnen der Differenz zwischen zwei benachbarten Zeilen einer Spalte
  • So sortieren Sie eine Zeile oder Spalte in MySQL
  • MySQL-Konvertierung von Spalten in Zeilen, Methode zum Zusammenführen von Feldern (unbedingt lesen)
  • MySQL-Beispiel für die Konvertierung von Spalten in Zeilen und die Gruppierung nach Jahr und Monat
  • Detaillierte Beispiele zur Konvertierung von Zeilen in Spalten und Spalten in Zeilen in MySQL
  • Implementierung der dynamischen Konvertierung von MySQL-Zeilen und -Spalten (Kontingenztabelle, Kreuztabelle)
  • Datenbankimplementierung der Zeilen- und Spaltenkonvertierung (MySQL-Beispiel)
  • So konvertieren Sie Zeilen in Spalten in MySQL

<<:  So verwenden Sie Selenium + Testng, um Webautomatisierung in Docker zu realisieren

>>:  js, um einen einfachen Bild-Drag-Effekt zu erzielen

Artikel empfehlen

CSS fügt Scroll zu Div hinzu und verbirgt die Bildlaufleiste

CSS fügt dem div Scrollen hinzu und verbirgt die ...

mysql5.6.zip-Format komprimierte Version Installations-Grafik-Tutorial

Vorwort: MySQL ist ein relationales Datenbankverw...

Detaillierte Erläuterung des Installationsprozesses von Jenkins auf CentOS 7

Installieren Sie Jenkins über Yum 1. Installation...

Scrollen von HTML-Marquee-Zeichenfragmenten

Seine Eigenschaften sind wie folgt: Richtung Stell...

Der vollständige Implementierungsprozess von Sudoku mit JavaScript

Inhaltsverzeichnis Vorwort So lösen Sie Sudoku Fü...

Implementierungsidee zur Linksausrichtung der letzten Zeile des Flexbox-Layouts

Wenn es sich bei der Verwendung des Flex-Layouts ...

MySQL-Cursorfunktionen und -Verwendung

Inhaltsverzeichnis Definition Die Rolle des Curso...

MySQL 5.7.17 Installations- und Konfigurations-Tutorial unter Linux (Ubuntu)

Vorwort Ich habe MySQL 5.6 bereits installiert. D...

Tiefgreifendes Verständnis der Matching-Logik von Server und Standort in Nginx

Server-Abgleichlogik Wenn Nginx entscheidet, in w...

Grundlegendes zum MySQL-Abfrageoptimierungsprozess

Inhaltsverzeichnis Parser und Präprozessoren Abfr...

Kurze Analyse von MySQL Union und Union All

In der Datenbank führen sowohl die Schlüsselwörte...

Beispiel zur Optimierung der MySQL-Einfügeleistung

MySQL-Leistungsoptimierung Die MySQL-Leistungsopt...