MySQL Split Comma Separated String into Temp Table using RegEx
MySQL には専用の文字列分割関数がないため、代替アプローチが必要です。 1 つの方法では、カスタム関数を反復処理して分割をエミュレートします。
カスタム Split Function
次の関数は、位置 pos で delim で区切られた文字列 x を分割します。
CREATE FUNCTION SPLIT_STR( x VARCHAR(255), delim VARCHAR(12), pos INT ) RETURNS VARCHAR(255) RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos), LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1), delim, '');
ループして一時ファイルに挿入するTable
分割文字列を反復処理して一時テーブルに挿入するには、LOOP ステートメントを使用します。
DELIMITER $$ CREATE PROCEDURE ABC(fullstr) BEGIN DECLARE a INT Default 0 ; DECLARE str VARCHAR(255); simple_loop: LOOP SET a=a+1; SET str=SPLIT_STR(fullstr,"|",a); IF str='' THEN LEAVE simple_loop; END IF; #Do Inserts into temp table here with str going into the row insert into my_temp_table values (str); END LOOP simple_loop; END $$
注: 次のようなスクリプト言語を使用します。このようなタスクでは、MySQL のみに依存するよりも PHP を使用した方が効率的である可能性があります。
以上が正規表現を使用してカンマ区切りの文字列を MySQL 一時テーブルに分割する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。