ホームページ > データベース > mysql チュートリアル > データ正規化のために MySQL でカンマ区切りリストを分割する方法は?

データ正規化のために MySQL でカンマ区切りリストを分割する方法は?

Linda Hamilton
リリース: 2025-01-06 11:41:41
オリジナル
1042 人が閲覧しました

How to Split Comma-Separated Lists in MySQL for Data Normalization?

MySQL でのカンマ区切りリストの分割

データをシステムに移行するときに、カンマ区切りの外部キー値を含む正規化されていないテーブルの操作が困難になる場合があります手続き型言語が欠けています。この問題に対処するために、MySQL はこれらのリストを正規化された行に変換するメソッドを提供します。

FIND_IN_SET() 関数の使用

カンマ区切りのリストを複数に分割するには行に対して、MySQL は FIND_IN_SET() 関数を提供します。この関数は、リスト内の特定の値の位置を返します。この関数を使用すると、リスト内の各値を反復処理し、一時テーブルに新しい行を挿入できます。

次のクエリは、指定されたテーブルの「material」列を正規化された行に分割する方法を示しています。

CREATE TEMPORARY TABLE split_materials (
  part_id INT,
  material_id INT
);

INSERT INTO split_materials (part_id, material_id)
SELECT
  part_id,
  CAST(SUBSTRING_INDEX(material, ';', 1) AS UNSIGNED)
FROM
  my_table;

INSERT INTO split_materials (part_id, material_id)
SELECT
  part_id,
  CAST(SUBSTRING_INDEX(material, ';', -1) AS UNSIGNED)
FROM
  my_table
WHERE
  material LIKE '%,%';
ログイン後にコピー

代替解決策

FIND_IN_SET() の場合関数は適切ではありません。

  • 正規表現を使用してリストから値を抽出することもできます。
  • JOIN 操作カンマ区切りリストを外部キーに関連付けるにはtable.

結論

MySQL でカンマ区切りのリストを複数の行に分割するには、FIND_IN_SET() 関数、正規表現、または JOIN を使用します。これにより、正規化されていないデータを正規化し、手続き型言語をサポートしていないシステムに取り込む準備をすることができます。

以上がデータ正規化のために MySQL でカンマ区切りリストを分割する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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