首頁 >資料庫 >mysql教程 >如何在 MySQL 中拆分逗號分隔的清單以實現資料規範化?

如何在 MySQL 中拆分逗號分隔的清單以實現資料規範化?

Linda Hamilton
Linda Hamilton原創
2025-01-06 11:41:411018瀏覽

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

在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 '%,%';

替代解決方案

替代解決方案
  • 如果FIND_IN_SET()函數不是適當的,您也可以探索使用:
  • 正規表示式從清單中提取值。

JOIN操作將外鍵的逗號分隔清單table.

結論在MySQL 中將逗號分隔的清單拆分為多行可以使用FIND_IN_SET() 函數、正規表示式或JOIN來實現。這允許您規範化非規範化資料並準備將其引入不支援過程語言的系統。

以上是如何在 MySQL 中拆分逗號分隔的清單以實現資料規範化?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn