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

如何將 SQL 中的逗號分隔值分割為單獨的行?

Mary-Kate Olsen
發布: 2025-01-14 09:55:42
原創
401 人瀏覽過

How Can I Split Comma-Separated Values in SQL into Separate Rows?

在 SQL 中分割逗號分隔的行值

在資料庫管理中,經常會遇到儲存為逗號分隔值 (CSV) 的資料。但是,出於某些分析或報告目的,可能需要將這些 CSV 拆分為單獨的行。在本文中,我們將探討一種基於 SQL 的方法來執行此分割操作。

解決方案涉及利用 MySQL 中的 SUBSTRING_INDEX() 函數。此函數允許我們根據分隔符號字元從指定字串中提取子字串。我們還使用與計數表的交叉連接來產生一系列數字,這些數字用作拆分 CSV 的行索引。

以下是 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>
登入後複製

此查詢有效地拆分了 table1 表中 values 列的 CSV 值,並為每個值建立新行。計數表允許拆分單行中的多個值。

範例資料與輸出:

考慮 table1 表中的以下數據:

values
somethingA,somethingB,somethingC
somethingElseA, somethingElseB

將查詢套用至此資料將產生以下輸出:

value
somethingA
somethingB
somethingC
somethingElseA
somethingElseB

透過利用此技術,可以方便地將以 CSV 格式儲存的資料拆分為各個行,從而可以進行進一步的分析或處理。

以上是如何將 SQL 中的逗號分隔值分割為單獨的行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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