Heim > Datenbank > MySQL-Tutorial > Wie teile ich durch Kommas getrennte Listen in MySQL zur Datennormalisierung auf?

Wie teile ich durch Kommas getrennte Listen in MySQL zur Datennormalisierung auf?

Linda Hamilton
Freigeben: 2025-01-06 11:41:41
Original
1019 Leute haben es durchsucht

How to Split Comma-Separated Lists in MySQL for Data Normalization?

Aufteilen von durch Kommas getrennten Listen in MySQL

Die Arbeit mit nicht normalisierten Tabellen, die durch Kommas getrennte Fremdschlüsselwerte enthalten, kann bei der Migration von Daten auf Systeme eine Herausforderung darstellen denen es an prozeduralen Sprachen mangelt. Um dieses Problem zu beheben, bietet MySQL eine Methode zum Konvertieren dieser Listen in normalisierte Zeilen.

Verwendung der Funktion FIND_IN_SET()

Um eine durch Kommas getrennte Liste in mehrere aufzuteilen Für Zeilen bietet MySQL die Funktion FIND_IN_SET() an. Diese Funktion gibt die Position eines bestimmten Werts innerhalb der Liste zurück. Mit dieser Funktion können Sie jeden Wert in der Liste durchlaufen und eine neue Zeile in eine temporäre Tabelle einfügen.

Die folgende Abfrage zeigt, wie die Spalte „Material“ aus der angegebenen Tabelle in normalisierte Zeilen aufgeteilt wird:

CREATE TEMPORARY TABLE split_materials (
  part_id INT,
  material_id INT
);

INSERT INTO split_materials (part_id, material_id)
SELECT
  part_id,
  CAST(SUBSTRING_INDEX(material, ';', 1) AS UNSIGNED)
FROM
  my_table;

INSERT INTO split_materials (part_id, material_id)
SELECT
  part_id,
  CAST(SUBSTRING_INDEX(material, ';', -1) AS UNSIGNED)
FROM
  my_table
WHERE
  material LIKE '%,%';
Nach dem Login kopieren

Alternative Lösungen

Wenn die Funktion FIND_IN_SET() nicht geeignet ist, können Sie dies auch tun Erkunden Sie mit:

  • Regulären Ausdrücken, um die Werte aus der Liste zu extrahieren.
  • JOIN-Operationen, um die durch Kommas getrennte Liste mit zu korrelieren der Fremdschlüssel Tabelle.

Fazit

Das Aufteilen von durch Kommas getrennten Listen in mehrere Zeilen in MySQL kann mithilfe der Funktion FIND_IN_SET(), regulärer Ausdrücke oder JOINs erreicht werden. Dadurch können Sie nicht normalisierte Daten normalisieren und für die Aufnahme in Systeme vorbereiten, die keine prozeduralen Sprachen unterstützen.

Das obige ist der detaillierte Inhalt vonWie teile ich durch Kommas getrennte Listen in MySQL zur Datennormalisierung auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage