揭示資料操作的複雜性:理解GROUP_CONCAT 的逆
將逗號分隔的資料轉換為單獨的行是一個常見的挑戰資料庫管理的障礙。此操作稱為資料正則化,涉及將連接的字串拆分為其組成部分。 MySQL 提供了一種強大的方法來使用適當的 SQL 語法來完成此任務。
本質上,我們尋求的是 GROUP_CONCAT 的逆操作。 GROUP_CONCAT 將多個字串值組合成一個連接字串,而逆過程將連接字串分離回其各個組成部分。
為了有效實現此轉換,我們可以利用 SUBSTRING_INDEX 函數和產生序列的子查詢數字。可以修改子查詢來處理每行超過四種顏色的情況。
以下 SQL 查詢示範了這種方法:
SELECT id, SUBSTRING_INDEX(SUBSTRING_INDEX(colors, ',', n.digit+1), ',', -1) color FROM colors INNER JOIN (SELECT 0 digit UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3) n ON LENGTH(REPLACE(colors, ',' , '')) <= LENGTH(colors)-n.digit ORDER BY id, n.digit
此查詢有效地將每種顏色提取為單獨的行,同時保留原始行順序。透過理解 GROUP_CONCAT 的逆操作,我們獲得了以複雜方式操作資料的能力,使我們能夠將原始資料轉換為更可用和結構化的格式。
以上是我們如何反轉 GROUP_CONCAT 將逗號分隔的資料分成 MySQL 中的各個行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!