將逗號分隔值轉換為 MySQL 中的單獨行
本指南示範如何將 MySQL 欄位中的逗號分隔值轉換為單獨的行。 假設您有一個表,其中有一列包含逗號分隔的數據,如下所示:
<code>somethingA,somethingB,somethingC somethingElseA, somethingElseB</code>
目標是將這些數據重組為:
<code>somethingA somethingB somethingC somethingElseA somethingElseB</code>
此 SQL 查詢實作了此轉換:
<code class="language-sql">SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(t.values, ',', n.n), ',', -1) value FROM table1 t CROSS JOIN ( SELECT a.N + b.N * 10 + 1 n FROM (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a ,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b ORDER BY n ) n WHERE n.n <= LENGTH(t.values) - LENGTH(REPLACE(t.values, ',', '')) + 1;</code>
說明:
此查詢巧妙地使用動態產生的數字表(子查詢)和 SUBSTRING_INDEX()
函數。 SUBSTRING_INDEX()
根據分隔符號提取子字串。數字表提供每個逗號分隔值的索引。 WHERE
子句確保查詢僅處理不超過每行中逗號分隔元素的實際數量的值。
重點:
SUBSTRING_INDEX(string, delimiter, count)
:這個功能很關鍵。 string
是輸入,delimiter
是逗號,count
指定要使用的分隔符號的出現位置。 count
的 -1
取得 最後一次出現分隔符號後 的所有內容。 WHERE
子句根據原始字串中逗號的數量動態調整傳回的行數,防止錯誤。 此方法有效地將逗號分隔的值拆分為單獨的行,從而產生更乾淨且更易於管理的資料集。
以上是如何將逗號分隔值轉換為 MySQL 中的單獨行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!