ホームページ >データベース >mysql チュートリアル >MySQL でカンマ区切りの文字列から値を抽出するにはどうすればよいですか?
カンマ区切り値からの MySQL 文字列の抽出
MySQL では、多くの場合、複数の値を含む文字列から個々の値を抽出する必要があります。カンマで区切ります。 MySQL は文字列分割関数をネイティブに提供していないため、これには課題が生じます。
これに対処するには、ストアド プロシージャを利用して値を反復的に抽出できます。方法は次のとおりです:
DELIMITER $$ CREATE FUNCTION strSplit(x VARCHAR(65000), delim VARCHAR(12), pos INTEGER) RETURNS VARCHAR(65000) BEGIN DECLARE output VARCHAR(65000); SET output = REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos) , LENGTH(SUBSTRING_INDEX(x, delim, pos - 1)) + 1) , delim , ''); IF output = '' THEN SET output = null; END IF; RETURN output; END $$ CREATE PROCEDURE BadTableToGoodTable() BEGIN DECLARE i INTEGER; SET i = 1; REPEAT INSERT INTO GoodTable (col1, col2) SELECT col1, strSplit(col2, ',', i) FROM BadTable WHERE strSplit(col2, ',', i) IS NOT NULL; SET i = i + 1; UNTIL ROW_COUNT() = 0 END REPEAT; END $$ DELIMITER ;
サンプルデータ:
Col1 | Col2 |
---|---|
1 | a,b,c |
2 | d,e |
結果:
Col1 | Col2 |
---|---|
1 | a |
1 | b |
1 | c |
2 | d |
2 | e |
使用法:
このソリューションを使用するには、元のデータを含む BadTable という名前のテーブルと、抽出された値を格納する GoodTable という新しいテーブルを作成します。次に、次のコマンドを実行します:
CALL BadTableToGoodTable(); SELECT * FROM GoodTable;
以上がMySQL でカンマ区切りの文字列から値を抽出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。