strSplit 関数を使用した MySQL の文字列の分割
重複スレッドの質問とは異なり、この質問は特にカンマ区切りの文字列を分割する方法を尋ねます。文字列列を複数の行に分割します。これを実現するために、MySQL は strSplit() 関数を活用する多用途ストアド プロシージャを提供します。
strSplit() 関数は、指定された区切り文字 (delim) と位置 (pos) に基づいて、指定された文字列 (x) を分解します。 。これは、区切り文字で区切られた文字列の位置 pos から部分文字列を抽出し、区切り文字を空の文字列に置き換えて、結果の部分文字列を返すことによって行われます。
説明のために、入力テーブルを考えてみましょう。
Col1 | Col2 |
---|---|
1 | a,b,c |
2 | d,e |
これを目的の出力に変換するには:
Col1 | Col2 |
---|---|
1 | a |
1 | b |
1 | c |
2 | d |
2 | e |
BadTableToGoodTable() ストアド プロシージャを定義します。
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 $$
ここでは、REPEAT ステートメントを使用して Col2 のカンマ区切り文字列内の各文字をループし、strSplit() を使用して部分文字列を抽出し、それを新しいテーブル (GoodTable) に挿入します。
これらの手順に従うことで、MySQL で文字列を効果的に分割し、カンマ区切りの列をより正規化されたデータに再形成できるようになります。構造。
以上がMySQL の strSplit 関数は、カンマ区切りの文字列を複数の行にどのように変換できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。