在MySQL 中拆分串聯字串
使用資料庫表時,您可能會遇到單一列包含多個串聯成單一值的情況細繩。雖然 GROUP_CONCAT 函數擅長將多行組合成單一字串,但其相反的操作(涉及將連接的字串拆分為單獨的行)可能是一個挑戰。此操作通常稱為字串擴展或分解。
問題陳述:
您將看到一個表,其中儲存名為「colors」的列,其中包含逗號 -分隔的顏色清單。您的目標是將表格重組為每行代表一種顏色的格式。
範例表格:
id | colors |
---|---|
1 | Red,Green,Blue |
2 | Orangered,Periwinkle |
所需表格格式:
id | colors |
---|---|
1 | Red |
1 | Green |
1 | Blue |
2 | Orangered |
2 | Periwinkle |
解決方案:
要達到預期的結果,您可以使用以下MySQL查詢:
SELECT id, SUBSTRING_INDEX(SUBSTRING_INDEX(colors, ',', n.digit+1), ',', -1) AS color FROM colors INNER JOIN (SELECT 0 AS digit UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3) AS n ON LENGTH(REPLACE(colors, ',', '')) <= LENGTH(colors)-n.digit ORDER BY id, n.digit
解釋:
注意: 此查詢假設每行最多包含4 種顏色。如果您的行可以有超過 4 種顏色,您將需要修改子查詢以產生更大的數字序列。
透過實現此查詢,您可以有效地將表中的串聯字串拆分為單獨的行,允許更輕鬆的處理和分析。
以上是如何將 MySQL 中的連接字串拆分為單獨的行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!