ホームページ >データベース >mysql チュートリアル >MySQL で連結された文字列を個々の行に分割するにはどうすればよいですか?
MySQL での連結文字列の分割
データベース テーブルを操作する場合、単一の列に単一の列に連結された複数の値が含まれるシナリオが発生することがあります。弦。 GROUP_CONCAT 関数は、複数の行を 1 つの文字列に結合する点では優れていますが、その逆の操作である、連結された文字列を個々の行に分割する操作は難しい場合があります。この操作は一般に文字列の展開または分解と呼ばれます。
問題ステートメント:
カンマを含む "colors" という名前の列を格納するテーブルが表示されます。色の分離されたリスト。目標は、各行が 1 つの色を表す形式にテーブルを再構築することです。
テーブルの例:
id | colors |
---|---|
1 | Red,Green,Blue |
2 | Orangered,Periwinkle |
必要なテーブル形式:
id | colors |
---|---|
1 | Red |
1 | Green |
1 | Blue |
2 | Orangered |
2 | Periwinkle |
解決策:
望ましい結果を達成するには、次の MySQL を使用できます。クエリ:
SELECT id, SUBSTRING_INDEX(SUBSTRING_INDEX(colors, ',', n.digit+1), ',', -1) AS color FROM colors INNER JOIN (SELECT 0 AS digit UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3) AS n ON LENGTH(REPLACE(colors, ',', '')) <= LENGTH(colors)-n.digit ORDER BY id, n.digit
説明:
注: このクエリは、各行に最大 4 色が含まれていることを前提としています。行に 4 色を超える色を含めることができる場合は、サブクエリを変更して、より大きな一連の数値を生成する必要があります。
このクエリを実装すると、テーブル内の連結された文字列を個々の行に効果的に分割できます。処理と分析が容易になります。
以上がMySQL で連結された文字列を個々の行に分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。