ホームページ > データベース > mysql チュートリアル > SQL のカンマ区切り値を別々の行に分割するにはどうすればよいですか?

SQL のカンマ区切り値を別々の行に分割するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-14 09:55:42
オリジナル
402 人が閲覧しました

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 値を効果的に分割し、値ごとに新しい行を作成します。カウント テーブルでは、複数の値を 1 行に分割できます。

データと出力の例:

table1 テーブルの次のデータについて考えてみましょう:

values
somethingA,somethingB,somethingC
somethingElseA, somethingElseB

このデータにクエリを適用すると、次の出力が生成されます:

value
somethingA
somethingB
somethingC
somethingElseA
somethingElseB

このテクノロジーを活用すると、CSV 形式で保存されたデータを個別の行に簡単に分割できるため、さらなる分析や処理が可能になります。

以上がSQL のカンマ区切り値を別々の行に分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート