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 '%,%';
Alternative Lösungen
Wenn die Funktion FIND_IN_SET() nicht geeignet ist, können Sie dies auch tun Erkunden Sie mit:
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!