在MySQL 中分割逗號分隔清單
將資料移轉到系統時,使用包含逗號分隔外鍵值的非規範化表可能具有挑戰性缺乏過程語言。為了解決這個問題,MySQL 提供了一種方法將這些清單轉換為規範化的行。
使用 FIND_IN_SET() 函數
將逗號分隔的清單拆分為多個行,MySQL 提供了 FIND_IN_SET() 函數。此函數傳回清單中特定值的位置。使用此函數,您可以迭代清單中的每個值並將新行插入臨時表中。
以下查詢示範如何將給定表中的「材料」欄位拆分為規範化行:
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 '%,%';
替代解決方案
替代解決方案JOIN操作將外鍵的逗號分隔清單table.
結論在MySQL 中將逗號分隔的清單拆分為多行可以使用FIND_IN_SET() 函數、正規表示式或JOIN來實現。這允許您規範化非規範化資料並準備將其引入不支援過程語言的系統。以上是如何在 MySQL 中拆分逗號分隔的清單以實現資料規範化?的詳細內容。更多資訊請關注PHP中文網其他相關文章!