首頁 > 資料庫 > mysql教程 > 如何將逗號分隔值轉換為 MySQL 中的單獨行?

如何將逗號分隔值轉換為 MySQL 中的單獨行?

Patricia Arquette
發布: 2025-01-14 08:30:42
原創
608 人瀏覽過

How to Convert Comma-Separated Values into Individual Rows in MySQL?

將逗號分隔值轉換為 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板