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

如何在 SQL 中將逗號分隔值分割為多行?

Patricia Arquette
發布: 2025-01-24 04:08:09
原創
981 人瀏覽過

How to Split Comma-Separated Values into Multiple Rows in SQL?

在 SQL中將值拆分為多行

資料處理中的一個常見任務是將逗號分隔的字串拆分為多行,如下所示舉例如下請求:

問題:

給定一個包含id 欄位和包含逗號分隔值的name列的表,回傳以下資料格式:

id name
1 a
1 b
1 c
2 b

解決方案:

為了實現這一點,我們可以利用MySQL 的SUBSTRING_INDEX 函數結合一個數字表,此表包含一系列數字,最多可達要拆分的最大欄位數。下面的查詢示範了這種方法:

SELECT
  tablename.id,
  SUBSTRING_INDEX(SUBSTRING_INDEX(tablename.name, ',', numbers.n), ',', -1) AS name
FROM
  numbers INNER JOIN tablename
  ON CHAR_LENGTH(tablename.name) - CHAR_LENGTH(REPLACE(tablename.name, ',', '')) >= numbers.n - 1
ORDER BY
  id, n
登入後複製

如果建立數字表不可行,我們可以使用以下查詢在查詢本身產生數字序列:

SELECT
  tablename.id,
  SUBSTRING_INDEX(SUBSTRING_INDEX(tablename.name, ',', numbers.n), ',', -1) AS name
FROM
  (
    SELECT 1 AS n UNION ALL
    SELECT 2 UNION ALL SELECT 3 UNION ALL
    SELECT 4 UNION ALL SELECT 5
  ) AS numbers INNER JOIN tablename
  ON CHAR_LENGTH(tablename.name) - CHAR_LENGTH(REPLACE(tablename.name, ',', '')) >= numbers.n - 1
ORDER BY
  id, n
登入後複製

示範:

[SQL Fiddle示範](https://www.sqlfiddle.com/#!5/cf4386/1)

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

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