MySQL で PHP のexplode() を模倣する
MySQL は、文字列を分割するための PHP の explode()
関数と直接同等のものを提供しません。 ただし、カスタム MySQL 関数を作成して同様の結果を得ることができます。この関数は、区切り文字に基づいて文字列を分割し、特定の部分を返します。
MySQL データベースに追加するユーザー定義関数は次のとおりです:
<code class="language-sql">CREATE FUNCTION SPLIT_STRING(str VARCHAR(255), delim VARCHAR(12), pos INT) RETURNS VARCHAR(255) RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(str, delim, pos), LENGTH(SUBSTRING_INDEX(str, delim, pos-1)) + 1), delim, '');</code>
この関数は、SUBSTRING_INDEX()
を利用して目的の部分文字列を検索し、SUBSTRING()
を利用してそれを抽出します。 pos
パラメータは、取得するセグメントを指定します (1 から開始)。 REPLACE()
は、残っている区切り文字を削除します。
関数の使用例:
カンマ区切りの文字列から最初の要素を抽出するには:
<code class="language-sql">SELECT SPLIT_STRING('apple, pear, melon', ',', 1); -- Returns 'apple'</code>
クエリへの統合:
スコアが「チーム A - チーム B」として保存されているテーブルがあるとします。 順序に関係なくスコアを比較するには:
<code class="language-sql">WHERE opponent1.date = opponent2.date AND SPLIT_STRING(opponent1.score, ' - ', 1) = SPLIT_STRING(opponent2.score, ' - ', 2) AND SPLIT_STRING(opponent1.score, ' - ', 2) = SPLIT_STRING(opponent2.score, ' - ', 1);</code>
このクエリは、データベース内でチームの順序が逆であっても、日付とスコアが同じ試合を検索します。 ここで、スコア文字列の両方の部分が両方向で等しいかどうかをチェックすることに注意してください。
以上が文字列操作のために MySQL で PHP のexplode() 関数を複製するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。